出现“使用当前位置”权限弹出窗口时,Appium 和 Selenium 无法连接
Posted
技术标签:
【中文标题】出现“使用当前位置”权限弹出窗口时,Appium 和 Selenium 无法连接【英文标题】:Appium and Selenium fail to connect when "Use current location" permission popup appears 【发布时间】:2013-04-09 12:17:15 【问题描述】:我正在尝试使用 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)
感谢任何帮助!
【问题讨论】:
【参考方案1】:对此有一个 appium 更新。只需添加始终接受这些警报的功能,以避免应用程序中的任何位置出现故障。 Java 示例:
capabilities.setCapability("autoAcceptAlerts", true);
【讨论】:
【参考方案2】:我相信这是 Instruments 中的一个已知问题。当定位服务在应用程序启动后大约 8 秒内弹出时,UIAutomation 出于某种原因不会处理弹出窗口。请参阅this discussion on the Appium mailing list 了解更多信息。
目前唯一提出的解决方案是将位置服务检查延迟到应用启动后约 8 秒。
【讨论】:
我也在那个帖子上发过帖子,如果这是 UIAutomation 本身的限制,似乎没有其他方法可以解决这个问题【参考方案3】:我遇到了同样的问题。为了让它工作,我向 Appium 添加了 2 个功能
caps =
"locationServicesAuthorized" => true
"bundleId" => "com.domain.myproject"
【讨论】:
【参考方案4】:你也可以试试:
启动您的应用,手动接受位置,然后将文件从路径复制到您的测试文件夹。
路径 - /Users/your_username/Library/Application Support/iPhone Simulator/7.0/Library/Caches/locationd/clients.plist
然后每次开始测试之前,将该文件复制回该位置,您将不会看到位置弹出窗口。
BR。 亚历克斯。
【讨论】:
以上是关于出现“使用当前位置”权限弹出窗口时,Appium 和 Selenium 无法连接的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 应用程序中更改系统弹出窗口以获得核心位置权限