Android+python+appium多机自动化
Android+python+appium实现多设备自动化测试;开不同的端口启动多个appium服务,多进程/多线程实现设备与appium的连接
·
一、多台设备连接电脑
adb devices查看设备序列号和连接状态
二、启动多个appium服务
开不同的端口,启动多个appium服务;
如果是桌面版appium:
在应用程序中找到appium,右键-》显示包内容,
点开macOS文件夹,能够看到appium可执行文件;
多次点击可以打开多个appium服务;
针对每个设备新开一个端口;
打开appium服务器,选择advanced;
设置’Sever Port’,‘Bootstrap Port’,按照递增1的规律,点击’Save As Presets’命名并保存;
点击’Presets’,选中想要启动的预设值端口,点击’Start Server V1.21.0’,后面可以根据需要几个安卓手机,启动几个appium服务;
效果:
如果电脑上装的是桌面版的appium,好像不能通过命令启动。
如果是命令行appium服务:
-
Appium服务器端口:4723,Bootstrap Port为4724
-
Appium服务器端口:4725,Bootstrap Port为4726
appium -a 127.0.0.1 -p 4723 -bp 4728 --chromedriver-port 9519 -U 255d50d7 --session-override
三、维护设备参数信息
把参数统一维护在一个配置文件里;device_config.json
[{
"url": "http://127.0.0.1:4723/wd/hub",
"desired_caps" : {
"platformName": "Android",
"platformVersion": "11",
"deviceName": "oneplus9",
"udid":"255d50d7",
"appActivity": "com.xxx.MainActivity",
"appPackage": "包名",
"automationName": "UiAutomator2",
"autoGrantPermissions": "true",
"noReset": true,
"newCommandTimeout":300
}
}, {
"url": "http://127.0.0.1:4725/wd/hub",
"desired_caps" : {
"platformName": "Android",
"platformVersion": "12",
"deviceName": "xiaomi12",
"udid":"e073ee1",
"appActivity": "com.xxx.MainActivity",
"appPackage": "包名",
"automationName": "UiAutomator2",
"autoGrantPermissions": "true",
"noReset": true,
"newCommandTimeout":300
}
}
]
四、多进程或者多线程进行设备与appium的连接,获取driver
def connect_appium(url,desired_caps):
#启动appium服务
#进行设备连接
driver = webdriver.Remote(command_executor=url,desired_capabilities=desired_caps)
return driver
if __name__ == '__main__':
with open("device_config.json", "r") as f:
data = list(json.load(f))
for i in match_list:
a = threading.Thread(target=connect_appium,args=(data[i]["url"],data[i]["desired_caps"]))
a.start()
更多推荐
已为社区贡献7条内容
所有评论(0)