Appium 关于 Appium 中 ios 自动化测试的几个问题,请教下大神,谢谢

yee · 2020年11月20日 · 最后由 YY 回复于 2020年12月24日 · 2819 次阅读

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 在试试这俩参数的使用

共收到 15 条回复 时间 点赞

xcodebuild

yee #7 · 2020年11月24日 Author
ltyd5788 回复

尝试了下貌似还是不行,在 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
yee #6 · 2020年11月24日 Author
ltyd5788 回复

但是这个参数貌似是起作用的,我关闭 wda,然后参数带上 url,会启动失败

绑定下 WDA 的路径确保是相同的 WDA,derivedDataPath 、usePrebuiltWDA 在试试这俩参数的使用

yee #3 · 2020年11月24日 Author
ltyd5788 回复

我应该确保绑定的 wda 就是我启动 test 的 wda,因为我每次启动测试用例,原先 test 状态的 wda 都会 crash,上面 2 个参数也尝试了,一样的报错,感觉是我启动了 wda,然后我启动 appium 的时候也启动了同一个工程的 wda 造成了冲突,从而 crash 了,有没有办法让我启动 session 的时候不启动 wda 估计就成功了。

yee #8 · 2020年11月24日 Author
ltyd5788 回复

知道原因了,我加了一个参数 "useNewWDA": True,注释掉就行了😓 ,感谢提供思路。。

总结一下,ios 测试时不重新安装 wda 的方法
1.xcode 中连接 wda
2.启动 capbility 中配置 usePrebuiltWDA,webDriverAgentUrl 及 derivedDataPath
3.不能配置 useNewWDA
4.如果配置 localhost,尝试使用http://localhost:8100/statusiproxy,看看有没有返回,如果没有手动启动 8100 8100 开启代理

yee 回复

usePrebuiltWDA,webDriverAgentUrl 及 derivedDataPath 的配置能给个示例么?谢谢

yee #5 · 2020年12月23日 Author
YY 回复

"useNewWDA": False,
'usePrebuiltWDA': True,
"webDriverAgentUrl": "http://localhost:8100",
'derivedDataPath': "/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent",

yee 回复

谢谢。试了之后上报 econnrefused 127.0.0.1 的错误,请问一下这个参数,我自己还需要修改什么?其实这个问题的初衷是因为,我多线程启动 session,会大概率失败,失败之后就会自动重装 WDA,装了之后如果不手动点击信任描述文件,session 获取就会失败,被困惑了好几天了,请帮忙解答一下,谢谢。

yee 回复

我这边看到的就是,只要接内网就会大概率失败,也不知道原因是什么

yee #14 · 2020年12月24日 Author
YY 回复

你需要做的就是 derivedDataPath 中写上你自己的配置成功的 wda 目录,另外一台手机理论上就一个 sesion 去控制,单线程运行就行了,我不明白多线程启动 session 是什么意思?难道还可以多个 session 控制一台手机,这样不会乱掉嘛?

yee 回复

嗯,单手机单线程不会有问题。多个手机就需要多个线程,一个手机挂一个 session,这个时候部分 session 就会获取失败

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册