出现“使用当前位置”权限弹出窗口时,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 无法连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 appium 中接受此警报?

请求 Google 日历权限时弹出额外授权

在 iPhone 应用程序中更改系统弹出窗口以获得核心位置权限

USB设备访问弹出抑制?

即使在 Ar.js 中的浏览器中授予权限后,地理定位访问被拒绝弹出窗口也会显示

Appium 自动化测试环境部署篇