1.因为我们项目组用 jenkins 运行 case 时,会经常重启 session,有时会出现 wda 启动失败的情况,有没有办法不要每次进行测试的时候都重装 wda?论坛就一个帖子说 xcode 连这就不用每次重装了,但是貌似我连着 xcode,启动 case 时,appium 会强制断开我 xcode 的链接,不知道有什么需要配置或别的方法?
2.长时间运行用例时,有一定概率 appium 服务会断开链接,错误如下,我看论坛说安卓是可以设置后台通过电量管理配置解决,但是 ios 有办法解决嘛?
Message: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server. Original error: Error: socket hang up
绑定下 WDA 的路径确保是相同的 WDA,derivedDataPath 、usePrebuiltWDA 在试试这俩参数的使用
密切关注
xcodebuild
可以尝试设置 webDriverAgentUrl 参数,从 [1] [2] 可了解细节
[1] https://github.com/appium/appium-xcuitest-driver/blob/master/lib/driver.js#L496
[2] https://github.com/appium/appium-xcuitest-driver#desired-capabilities
尝试了下貌似还是不行,在 cdesire_caps 增加了 webDriverAgentUrl,但是运行后原先连的 xcode 就 crash 了。
Restarting after unexpected exit or crash in UITestingUITests/testRunner; summary will include totals from previous launches.
Test Suite 'Selected tests' started at 2020-11-24 14:57:18.335
Test Suite 'WebDriverAgentRunner.xctest' started at 2020-11-24 14:57:18.338
Test Suite 'WebDriverAgentRunner.xctest' failed at 2020-11-24 14:57:18.339.
Executed 1 test, with 1 failure (0 unexpected) in 0.000 (0.001) seconds
Test Suite 'WebDriverAgentLib.framework' started at 2020-11-24 14:57:18.341
Test Suite 'WebDriverAgentLib.framework' passed at 2020-11-24 14:57:18.342.
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds
Test Suite 'Selected tests' failed at 2020-11-24 14:57:18.344.
Executed 1 test, with 1 failure (0 unexpected) in 0.000 (0.010) seconds
Test session log:
/var/folders/fg/6dxmk55x3qqdyt75c_h4xl7r0000gn/T/com.apple.dt.XCTest/IDETestRunSession-002DB694-94E7-4917-BDDB-162D8A71714A/WebDriverAgentRunner-2A33550B-18DF-4157-B56D-6A6E5652E0CF/Session-WebDriverAgentRunner-2020-11-24_145654-BsOKVu.log
绑定下 WDA 的路径确保是相同的 WDA,derivedDataPath 、usePrebuiltWDA 在试试这俩参数的使用
我应该确保绑定的 wda 就是我启动 test 的 wda,因为我每次启动测试用例,原先 test 状态的 wda 都会 crash,上面 2 个参数也尝试了,一样的报错,感觉是我启动了 wda,然后我启动 appium 的时候也启动了同一个工程的 wda 造成了冲突,从而 crash 了,有没有办法让我启动 session 的时候不启动 wda 估计就成功了。
总结一下,ios 测试时不重新安装 wda 的方法
1.xcode 中连接 wda
2.启动 capbility 中配置 usePrebuiltWDA,webDriverAgentUrl 及 derivedDataPath
3.不能配置 useNewWDA
4.如果配置 localhost,尝试使用http://localhost:8100/statusiproxy,看看有没有返回,如果没有手动启动 8100 8100 开启代理
"useNewWDA": False,
'usePrebuiltWDA': True,
"webDriverAgentUrl": "http://localhost:8100",
'derivedDataPath': "/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent",
谢谢。试了之后上报 econnrefused 127.0.0.1 的错误,请问一下这个参数,我自己还需要修改什么?其实这个问题的初衷是因为,我多线程启动 session,会大概率失败,失败之后就会自动重装 WDA,装了之后如果不手动点击信任描述文件,session 获取就会失败,被困惑了好几天了,请帮忙解答一下,谢谢。
你需要做的就是 derivedDataPath 中写上你自己的配置成功的 wda 目录,另外一台手机理论上就一个 sesion 去控制,单线程运行就行了,我不明白多线程启动 session 是什么意思?难道还可以多个 session 控制一台手机,这样不会乱掉嘛?