tl;dr:safaridriver
经常无法在真正的iOS 13设备上连接到mobileSafari。移动浏览器似乎在网络驱动程序连接关闭后处于暂停模式。要进行进一步的连接,唯一的解决方案是通过iOS应用程序切换器手动杀死mobileSafari。
编辑:该问题只能在iPad上重现。这个问题似乎在iPhone上不存在。
我正在尝试使用新的iOS 13网络驱动程序直接在iOS设备上运行硒测试。 它似乎按照 https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/中所述工作,但是当尝试运行第二个测试会话时,野生动物园驱动程序似乎无法在设备上连接移动野生动物园。 这似乎发生了,如果第二个会话在第一个会话之后没有立即启动 - mobileSafari 似乎已暂停,Safari 驱动程序无法处理这种情况。
使用邮递员,连接到正在运行的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": ""
}
}
无法解决此问题。唯一的解决方案是通过应用程序切换器手动杀死移动浏览器。
也许有人有一个想法,如何解决这个问题。将不胜感激,因为这是运行连续自动运行测试的真正障碍。
尝试在真正的iPad设备上启动会话时,我遇到了完全相同的问题。
man safaridriver
在深入研究了safaridriver
手册后,我发现功能中的设置safari:deviceType
存在,所以我尝试了一下,它有效:
POST /session
{
"capabilities": {
"firstMatch": [
{
"safari:deviceType": "iPad", // <- add this
"platformName": "ios",
"browserName": "Safari"
}
]
}
}
其他脚注:
- 我用过
firstMatch
,但alwaysMatch
也应该工作。 safaridriver
将评估不区分大小写的值- 使用 Safari13.1的 safari 驱动程序和Safari Technology Preview 107的 safari 驱动程序进行测试。适用于这两种情况,尽管 STP 的错误消息更有帮助。
- 此外,您需要在iPad上打开"Safari>高级>网页检查器">(仅在iPad连接到MacOS机器后出现(才能启动会话。