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。
也许任何人都有想法,如何解决。会很感激的,因为这是运行连续自动运行测试的真实表现。
尝试在真正的iPad设备上开始会话时,我遇到了完全相同的问题。
[用safaridriver
深入研究man safaridriver
手册后,我发现存在功能中的safari:deviceType
设置,因此我尝试了一下,并且可以使用:
POST /session
{
"capabilities": {
"firstMatch": [
{
"safari:deviceType": "iPad", // <- add this
"platformName": "ios",
"browserName": "Safari"
}
]
}
}
附加脚注:
firstMatch
,但预计alwaysMatch
也可以使用。safaridriver
将评估不区分大小写的值