5

我正在尝试使用 Appium 自动化 iOS 测试。我有一个应用程序需要用户位置并在首次启动时请求位置权限。当我尝试将 selenium 连接到全新安装时,出现弹出窗口时它会失败。当我手动接受弹出窗口时,Seleium 和 Appium 连接成功,并且测试能够继续。

这是服务器输出的副本:

error: Instruments did not launch successfully, failing session
error: Failed to start an Appium session, err was: Instruments did not launch successfully--please check your app paths or bundle IDs and try again
info: Responding to client with error: {"status":6,"value":{"message":"A session is either terminated or not started","origValue":"Instruments did not launch successfully--please check your app paths or bundle IDs and try again"},"sessionId":"faccc84b-fa8e-4137-ad77-f0c79d09b045"}
POST /wd/hub/session 500 13605ms - 270
debug: - - - "POST /wd/hub/session HTTP/1.1" 500 270 "-" "Ruby"
info: Clearing out appium devices

和硒输出的副本:

Selenium::WebDriver::Error::NoSuchDriverError:
       A session is either terminated or not started

我正在使用以下命令初始化 Selenium:

@driver = Selenium::WebDriver.for(:remote, :desired_capabilities => capabilities, :url => server_url)

任何帮助表示赞赏!

4

4 回答 4

2

对此有一个 appium 更新。只需添加始终接受这些警报的功能,以避免应用程序中的任何位置出现故障。Java 示例:

        capabilities.setCapability("autoAcceptAlerts", true);
于 2014-02-21T16:23:57.793 回答
1

我相信这是 Instruments 中的一个已知问题。当定位服务在应用程序启动后大约 8 秒内弹出时,UIAutomation 出于某种原因不会处理弹出窗口。有关更多信息,请参阅Appium 邮件列表上的讨论。

迄今为止提出的唯一解决方案是将位置服务检查延迟到应用启动后约 8 秒。

于 2013-05-03T20:53:00.950 回答
1

我遇到过同样的问题。为了让它工作,我向 Appium 添加了 2 个功能

    caps = {
        "locationServicesAuthorized" => true
        "bundleId" => "com.domain.myproject"
    }
于 2015-01-16T16:35:56.777 回答
0

您也可以尝试:

启动您的应用程序,手动接受位置,然后将文件从路径复制到您的测试文件夹。

路径 - /Users/your_username/Library/Application Support/iPhone Simulator/7.0/Library/Caches/locationd/clients.plist

然后每次开始测试之前,将该文件复制回该位置,您将看不到位置弹出窗口。

BR。亚历克斯。

于 2013-10-07T20:49:28.040 回答