gpt4 book ai didi

iOS 13 safaridriver 无法创建 safari session

转载 作者:行者123 更新时间:2023-12-04 04:09:52 26 4
gpt4 key购买 nike

tl;dr:safaridriver 通常无法在真正的 iOS 13 设备上连接到 mobileSafari。在关闭 webdriver 连接后,mobileSafari 似乎处于某种挂起模式。要进一步建立连接,唯一的解决方案是通过 iOS 应用程序切换器手动终止 mobileSafari。

编辑:该问题只能在 iPad 上重现。 iPhone 上似乎不存在此问题。


我正在尝试使用新的 iOS 13 webdriver 可能性直接在 iOS 设备上运行 selenium 测试。它似乎按照 https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/ 中的描述工作但是当尝试运行第二个测试 session 时,safaridriver 似乎无法在设备上连接 do mobileSafari。如果在第一个 session 之后没有立即开始第二个 session ,这似乎会发生 - mobileSafari 似乎被暂停并且 safaridriver 无法处理这种情况。

使用 Postman,连接到正在运行的 safaridriver -p 5500 服务器。使用原始主体发出 localhost:5500/session 请求:

{
"capabilities": {
"alwaysMatch": {
"browserName": "Safari",
"platformName": "iOS"
}
}
}

在多次重试后,这将导致:

{
"value": {
"error": "session not created",
"message": "Could not create a session: The session timed out while connecting to a Safari instance.",
"stacktrace": ""
}
}

无法解决此问题。唯一的解决方案是通过 App Switcher 手动终止 mobileSafari。

也许任何人都知道如何解决这个问题。将不胜感激,因为这是运行连续自动运行测试的真正亮点。

最佳答案

尝试在真实的 iPad 设备上启动 session 时,我遇到了完全相同的问题。

在使用 man safaridriver 深入了解 safaridriver 手册后,我发现在功能中设置 safari:deviceType 是存在的,所以我尝试了它并且有效:

POST /session

{
"capabilities": {
"firstMatch": [
{
"safari:deviceType": "iPad", // <- add this
"platformName": "ios",
"browserName": "Safari"
}
]
}
}

附加脚注:

  • 我使用了 firstMatch,但 alwaysMatch 应该也能正常工作。
  • safaridriver 将评估不区分大小写的值
  • 使用 Safari 13.1 的 safaridriver 和 Safari Technology Preview 107 的 safaridriver 进行了测试。两者都适用,但 STP 的错误消息更有用。
  • 此外,您还需要在 iPad 上打开“Safari > Advanced > Web Inspector”(这仅在 iPad 连接到 MacOs 计算机后出现)才能开始 session 。

关于iOS 13 safaridriver 无法创建 safari session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61912315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com