Python+Appium同时控制多个Android模拟器
环境
windows 10
Appium-windows-1.18.0-2
nox_setup_v7.0.0.5_full
android-sdk_r24.4.1-windows
夜神模拟器
adb连接夜神模拟器
adb # 查看是否安装adb
adb devices # 查看设备信息
adb connect 127.0.0.1:62001 # 夜神模拟器第一个模拟器端口是62001,第二个模拟器端口号是62025,第三个是62025+1,依此类推。
Appium
方式一:开一个Appium窗口监听三个夜神模拟器
General Server Port 4723
Android Bootstrap Port 4724
方式二:开三个Appium窗口分别监听三个夜神模拟器
设备1
General Server Port 4723
Android Bootstrap Port 4724
设备2
General Server Port 4725
Android Bootstrap Port 4726
设备3
General Server Port 4727
Android Bootstrap Port 4728
每次配置后都点击“Save as preset…”
页面配置了3个端口监听,所以打开3个appium页面
Python代码
# coding=utf-8
'''
Created on 2020/09/29
@author:Susin
'''
from appium import webdriver
import time
import threading
desired_caps1 = {
'platformName': 'Android', # 平台 安卓
'deviceName': '127.0.0.1:62001', # 设备名,使用安卓模拟器时设备名任意
'platformVersion': '7', # 模拟器版本
'automationName': 'UIAutomator2',
'androidInstallTimeout': 300000,
'adbExecTimeout': 10000,
'udid': '127.0.0.1:62001', # adb devices 显示的id
'appPackage': 'com.taobao.taobao',
'appActivity': 'com.taobao.tao.welcome.Welcome',
}
desired_caps2 = {
'platformName': 'Android', # 平台 安卓
'deviceName': '127.0.0.1:62025', # 设备名,使用安卓模拟器时设备名任意
'platformVersion': '7', # 模拟器版本
'automationName': 'UIAutomator2',
'androidInstallTimeout': 300000,
'adbExecTimeout': 10000,
'udid': '127.0.0.1:62025', # adb devices 显示的id
'appPackage': 'com.taobao.taobao',
'appActivity': 'com.taobao.tao.welcome.Welcome',
}
desired_caps3 = {
'platformName': 'Android', # 平台 安卓
'deviceName': '127.0.0.1:62026', # 设备名,使用安卓模拟器时设备名任意
'platformVersion': '7', # 模拟器版本
'automationName': 'UIAutomator2',
'androidInstallTimeout': 300000,
'adbExecTimeout': 10000,
'udid': '127.0.0.1:62026', # adb devices 显示的id
'appPackage': 'com.taobao.taobao',
'appActivity': 'com.taobao.tao.welcome.Welcome',
}
def task1():
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps1)
##休眠20s等待页面加载完成
time.sleep(20)
print(driver.contexts)
print("127.0.0.1:62001执行完成")
driver.quit()
def task2():
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps2)
##休眠20s等待页面加载完成
time.sleep(20)
print(driver.contexts)
print("127.0.0.1:62025执行完成")
driver.quit()
def task3():
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps3)
##休眠20s等待页面加载完成
time.sleep(20)
print(driver.contexts)
print("127.0.0.1:62026执行完成")
driver.quit()
threads = []
t1 = threading.Thread(target=task1)
threads.append(t1)
t2 = threading.Thread(target=task2)
threads.append(t2)
t3 = threading.Thread(target=task3)
threads.append(t3)
if __name__ == '__main__':
# for t in threads:
# t.start()
threading.Thread(target=task1).start()
threading.Thread(target=task2).start()
threading.Thread(target=task3).start()
参考文章:
Appium-控制多台安卓设备执行的入门级实现