【问题标题】:iOS 13 safaridriver can not create safari sessioniOS 13 safaridriver 无法创建 safari 会话
【发布时间】:2020-05-20 11:46:41
【问题描述】:

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/ 中的描述工作,但是在尝试运行第二个测试会话时,safaridriver 似乎无法连接设备上的 mobileSafari。 这似乎发生了,如果在第一个会话之后没有立即启动第二个会话 - 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。

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

【问题讨论】:

    标签: ios selenium webdriver webkit safaridriver


    【解决方案1】:

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

    在用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 计算机后才会出现)才能开始会话。

    【讨论】:

    • 感谢您的回复。我尝试了自定义功能的所有组合,包括 safaridriver 手册页中提到的 safari:deviceUDIDsafari:deviceNamesafari:deviceType。不幸的是,它对这个问题没有任何影响。删除请求是否也会关闭 iPad 上的 mobileSafari?奇怪的是,在 iPhone 上 mobileSafari 保持打开状态,而在 iPad 上却关闭了。
    • 您在哪里查看 STP 的错误消息? Konsole 应用,搜索webdriver?
    • 无赖!猜猜我们将不得不等待 safaridriver 团队的更新。我忘了提,我在最新的 iOS 版本上使用 iPad Pro - 也许这是一个因素?是的,DELETE /session 请求关闭了 iPad 上的移动 Safari 测试自动化会话(我看到橙色浏览器正在关闭,iPad 导航到主页或最后打开的应用程序)。根据我的经验,它也会关闭 iPhone 上的移动 Safari 测试会话。关于错误消息,我指的是 safaridriver 响应中返回的错误。我只是使用 PostMan 手动处理 http 请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多