Appium 多个 iOS 设备同时进行 UI 自动化测试

tinctorial · 2020年07月22日 · 最后由 tinctorial 回复于 2020年07月29日 · 3742 次阅读

多个 iOS 设备同时进行 UI 自动化测试关键点在于针对不同手机开启不同 appium 服务;

重点:针对不同手机开启 appium 服务方法
subprocess.Popen('appium -a 0.0.0.0 -p 8100 -bp 3333 - webdriveragent-port 1233 --udid 设备 udid & appium -a 0.0.0.0 -p 8110 -bp 2222 - webdriveragent-port 1234 --udid 另一个设备 udid ' , shell=True)

根据不同的 udid 来执行 webdriver.Remote,执行生成的 webdriver 对象可以和对应的 udid 存放在一个字典里,后边使用的时候在这个字典里取出来就行了;
使用 Python 多线程也能实现两个设备执行不同的脚本;

注意:
自动化测试的时候开启了多个 appium 服务会导致 webdriver 启动 app 失败,需要在 case 执行完成后 kill 掉 appium 服务

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

之前卡在无法链接到 iOS 设备这个点上,之后就撂下了!使用 xcode 生成 webdriveragent 了,但是通过 appium 执行的时候,又把这个 webdriveragent 删掉了,导致执行失败!我想知道你是用的 appium 自带的那个 webdriveragent 生成的吗?还是 facebook 的那个?

宝藏 回复

使用的 appium 自带的 webdriveragent,被删掉有可能是你 appium 版本太低了?我做的时候被删掉还会再重新安装的;
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent 这个路径下的 xcode 工程打开配置好重新执行下试试吧
可以加我 QQ 979778584 细聊,我也不知道你遇到的是哪种情况🤣

设置--webdriveragent-port 参数后,DesiredCapabilities 也要设置wdaLocalPort参数进去,不然并没有真的对并行多台手机同时执行,没有设置wdaLocalPort参数对话例如你在输入对时候,两台手机只有一台输入,而且要输入对东西都在同一台手机上

看你最好不要用 8100 设置为 Appium 端口,因为 WebDriverAgent 的默认端口就是 8100(也方便调试),你可以设置 WebDriverAgent 的端口为 8101,8102 之类的,还有开启多个 Appium 服务并不会导致启动 app 失败,你可能某个地方冲突了....,我现在 7 8 台 iPhone&iPad 在同一台电脑上执行一点问题都没

Yu 回复

我是用多线程实现的并行执行,就是开两个线程,分别对两个不同手机的 webdriver 对象进行控制,貌似也能行😅

Yu 回复

这个端口设置确实要多试试,我写的 8100 是举个例子😂 实际使用需要多调试下,我那个自动化每个 case 都会开启一个 appium 服务,所以如果不 kill 掉,积累起来就有几十个,服务开得多了对电脑的性能也有影响(可能是之前用的电脑配置太低了),所以每次开启用完就需要 kill 掉😂

tinctorial 回复

那你为什么为每个 case 启动一个服务,而不用现有的,例如每台手机一个服务然后服务里设置对应的--webdriveragent-port,如果一个测试执行完成的话已经有 driver 了直接调用已有的,多看看Appium Pro里的文章吧

Yu 回复

是的,没想到😂 感谢指导🙏

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