iOS 13 Safari驱动程序无法创建Safari会话

问题描述 投票:1回答:1

tl; dr:safaridriver通常无法在真实的iOS 13设备上连接到mobileSafari。关闭网络驱动程序连接后,mobileSafari似乎处于暂停模式。为了进一步建立联系,唯一的解决方案是通过iOS应用切换器手动杀死mobileSafari。

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


我正在尝试使用新的iOS 13网络驱动程序直接在iOS设备上运行硒测试。它似乎可以按https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/中所述运行,但是当尝试运行第二次测试会话时,safaridriver似乎无法连接设备上的mobileSafari。如果第二个会话在第一个会话之后没有立即开始,则似乎会发生这种情况-mobileSafari似乎已暂停,而safaridriver无法处理这种情况。

使用邮递员,连接到正在运行的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。

也许任何人都有想法,如何解决。会很感激的,因为这是运行连续自动运行测试的真实表现。

ios selenium webdriver webkit safaridriver
1个回答
0
投票

尝试在真正的iPad设备上开始会话时,我遇到了完全相同的问题。

[用safaridriver深入研究man safaridriver手册后,我发现存在功能中的safari:deviceType设置,因此我尝试了一下,并且可以使用:

POST /session

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

附加脚注:

  • 我使用了firstMatch,但预计alwaysMatch也可以使用。
  • [safaridriver将评估不区分大小写的值
  • 使用Safari 13.1的safaridriver和Safari技术预览107]的safaridriver进行了测试。尽管STP的错误消息更有用,但两者均可使用。
  • 此外,您将需要在iPad上打开“ Safari>高级> Web检查器”] >>(仅在iPad连接到MacOs机器后才出现)以开始会话。
© www.soinside.com 2019 - 2024. All rights reserved.