Appium Appium (iOS) 并行测试方法

fdeferf · May 10, 2017 · Last by 不贱不散 replied at August 09, 2019 · 1950 hits

介绍:

  1. 指定 Appium 的服务端口和代码中设置的 driver 端口一致
  2. 设置 wdaLocalPort 要保证和其他测试的端口不同
  3. 设置 udid

appium 服务端口 4723 默认

appium -p 4723 

iproxy 默认端口转发 8100

capabilities.setCapability("wdaLocalPort", "8001");

设置 udid

capabilities.setCapability("udid","xxxx");

提示:

deviceName 可以不修改

platformVersion 可以写测试设备中最高的版本

使用 wdaLocalPort 属性修改 iProxy 转发端口

为保证每次测试成功最好加上 xcodeOrgIdxcodeSigningId

测试网页(暂未实验)

You should start webkit in two different terminal;
Device 1 :
ios_webkit_debug_proxy -c udid1:27753 -d

Device 2 :
ios_webkit_debug_proxy -c udid2:27754 -d

And start appium for each devices with udid's and webkit port's ;

Device 1 :
appium -U udid1 --webkit-debug-proxy-port 27753

Device 2 :
appium -U udid2 --webkit-debug-proxy-port 27754
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞

请问在代码中要如何写?只需在不同设备的 capabilities 设置中加入这条指令就可以么?

capabilities.setCapability("wdaLocalPort", "8001");

lz 能否贴下代码?非常感谢!
这个方法适用于多台真机还是多台模拟器?

fdeferf #3 · May 10, 2017 Author
gundamsing 回复

不同的设备, wdaLocalPort 的值不同, 比如我第一个设备的值是 8001, 那第二个设备可以是 8002, 只要不冲突即可, 这是真机的方法, 模拟器应该没有这么麻烦

fdeferf 回复

我刚刚试了一下,初始化的时候前后初始化了两台不同的 iphone,cap 里面加入了不同 wdaLocalPort,但是测试还是只会在后一台被初始化的设备上启动。所以还是不太明白 LZ 到底是怎么设置的。。。虚心求解。

PS.之前的说法不是一直都是 iOS 本地真机只能串行测试不能并行测试么?

fdeferf #5 · May 10, 2017 Author
gundamsing 回复

严格来说,那也可能我的这种方法也是串行的。

  1. 首先启动两个端口不同的 appium
  2. 启动第一个真机的用例(修改 driver 端口和 udid),wdaLocalPort 的值为 8001
  3. 启动第二个真机的用例(修改 driver 端口和 udid),wdaLocalPort 的值为 8002

我这边的用到并行的不多,参数也是手动改的,理论上这些都可以用代码代替,自动生成和修改这些参数

请教一下,我是直接下载 appium.app,请问在哪可以直接写代码呢?

fdeferf #7 · July 17, 2017 Author
浅浅 回复

Appium 软件里不能写代码,在你的开发工具里新建文件写,可以参考官方 DEMO

曾经试过这样的方式,其实跟 android 是一样的,但是达不到并行的效果,所以不知道是不是那里设置有问题

@mamian 我用的 Mac 机 做 iOS 测试,用的开发工具是 Xcode,是在 Xcode 里面的 xcuitest 写测试代码吗?

@mamian 有什么方法一台 MAC 上打开 2 个 Appium 客户端吗?

fdeferf #12 · August 07, 2017 Author
Wu 回复

最好不要用客户端, 用 shell 执行, 针对不同的端口 appium -p 端口号

fdeferf 回复

命令行启动话的,是不是一定要到 appium 的目录下去启动 appium,现在我在命令行敲 appium 直接报错。(我安装 appium 不是按照命令行安装的,是按照 dmg 安装的)

fdeferf #14 · August 07, 2017 Author
Wu 回复

dmg 是 GUI 客户端, 要用 nodejs 安装

fdeferf 回复

这样子啊,因为我只是想做一个 MAC 上运行 IOS 和 Android 两种设备,最直接的办法就是修改端口就好了(个人的思路),所以如果能能打开 2 个 GUI 的客户端,修改两个端口基本上应该就可以执行,现在我就是不知道要怎样才能打开 2 个客户端,你有尝试打开过 2 个 GUI 客户端吗?

fdeferf #16 · August 08, 2017 Author
Wu 回复

你尝试一下, 开一个客户端, 然后开 2 个 Session

端口分配了不同的,运行还是串行的,无法并行

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up