需不同ADB版本的手机与模拟器实现Appium并行测试方案咨询
实现手机与模拟器的Appium并行测试方案
当然可以实现!核心思路是给两个Appium服务实例分别指定对应版本的ADB,同时用不同的端口避免冲突,让各自服务连接对应的设备。具体步骤如下:
1. 准备两个版本的ADB
- 下载ADB 1.0.31和1.0.36版本,分别解压到独立的文件夹,比如:
C:\adb\adb_1.0.31(给Memu模拟器用)C:\adb\adb_1.0.36(给Kiano手机用)
- 验证每个文件夹里的ADB版本是否正确,打开命令行进入对应文件夹,执行:
确认输出的版本号和文件夹对应的一致。adb version
2. 启动两个独立的Appium服务
你需要启动两个Appium服务,每个服务绑定不同的端口,并指定对应的ADB路径:
启动给Memu用的Appium服务(端口4723)
打开命令行,执行:
appium -p 4723 --adb-path C:\adb\adb_1.0.31\adb.exe
启动给Kiano手机用的Appium服务(端口4725)
再打开一个新的命令行窗口,执行:
appium -p 4725 --adb-path C:\adb\adb_1.0.36\adb.exe
注意:端口号只要不冲突就行,4723是默认端口,第二个服务换个比如4725、4727都可以。
3. 配置测试脚本连接对应服务
在你的测试代码里,分别为手机和模拟器创建不同的Desired Capabilities,指定对应的Appium服务地址和设备UDID:
针对Memu模拟器的Capabilities示例
desired_caps_memu = { "platformName": "Android", "deviceName": "Memu", "udid": "127.0.0.1:21503", # 替换成你的Memu设备UDID,可通过adb devices获取 "appPackage": "com.your.app", "appActivity": ".MainActivity", "automationName": "UiAutomator2" } # 连接到端口4723的Appium服务 driver_memu = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps_memu)
针对Kiano手机的Capabilities示例
desired_caps_kiano = { "platformName": "Android", "deviceName": "Kiano", "udid": "XXXXXX", # 替换成你的Kiano手机UDID,可通过adb devices获取 "appPackage": "com.your.app", "appActivity": ".MainActivity", "automationName": "UiAutomator2" } # 连接到端口4725的Appium服务 driver_kiano = webdriver.Remote("http://localhost:4725/wd/hub", desired_caps_kiano)
4. 关键注意事项
- 设备UDID获取:分别在两个ADB文件夹下执行
adb devices,获取对应设备的UDID(Memu通常是127.0.0.1:xxxx,手机是一串字符)。 - 避免系统ADB干扰:不要把这两个ADB路径加到系统PATH里,确保Appium服务用的是你指定的路径。
- 端口冲突排查:如果启动服务时报端口被占用,换个未使用的端口即可,可用
netstat -ano | findstr 端口号查看占用情况。 - 并行执行测试:确保你的测试框架支持并行运行(比如用TestNG、pytest-xdist等),这样两个设备的测试就能同时进行了。
内容的提问来源于stack exchange,提问作者dafie
相关产品推荐
相关产品推荐

