我正在尝试使用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)
感谢任何帮助!
答案 0 :(得分:2)
有一个appium更新。只需添加功能即可始终接受这些警报,以避免应用程序中的任何位置出现故Java示例:
capabilities.setCapability("autoAcceptAlerts", true);
答案 1 :(得分:1)
我认为这是仪器中的一个已知问题。当应用程序启动大约8秒内弹出位置服务时,UIAutomation由于某种原因无法处理弹出窗口。有关详细信息,请参阅this discussion on the Appium mailing list。
到目前为止,唯一提出的解决方案是延迟定位服务检查,直到应用程序启动后约8秒。
答案 2 :(得分:1)
我有同样的问题。为了实现它,我向Appium添加了2个功能
caps = {
"locationServicesAuthorized" => true
"bundleId" => "com.domain.myproject"
}
答案 3 :(得分:0)
你也可以尝试:
启动您的应用,手动接受位置,然后将文件从路径复制到测试文件夹。
路径 - / Users / your_username / Library / Application Support / iPhone Simulator / 7.0 / Library / Caches / locationd / clients.plist
然后每次开始测试之前,将该文件复制回该位置,您将看不到位置弹出窗口。
BR。 阿莱克斯。