Appium 多线程自动化----Android
Appium 自动化多线程
1.模拟器多开

2.将模拟器通过adb命令连接到server
夜神模拟器第一个模拟器默认端口 60001
第二个 60025
第n 个 60025(累加1)
连接:adb connect 127.0.0.1:端口号
查看当前:adb devices

3.启动多个appium
对应连接上模拟器

默认端口号为4723
新建累加4 例如第二个设为4727

4.前置代码
需要注意的地方:
- 因为模拟器情况下deviceName没有实际意义,随便填都行,所以需要加上udid来唯一区分
- 用下面的target相关的代码才能同步运行,之前没有用这个就是先第一个再后一个。
import threading
import time
from appium import webdriver
desired_caps1 = {"platformName": "Android", # 平台名称
"platformVersion": "7", # 系统版本号
"deviceName": "127.0.0.1:62001", # 设备名称。如果是真机,一般在'设置->关于手机->设备名称'里查看
"appPackage": "com.android.chrome", # apk的包名
"appActivity": "com.google.android.apps.chrome.Main", # activity 名称
"udid": "127.0.0.1:62001"
}
desired_caps2 = {"platformName": "Android", # 平台名称
"platformVersion": "7", # 系统版本号
"deviceName": "127.0.0.1:62025", # 设备名称。如果是真机,一般在'设置->关于手机->设备名称'里查看
"appPackage": "com.android.chrome", # apk的包名
"appActivity": "com.google.android.apps.chrome.Main", # activity 名称
"udid": "127.0.0.1:62025"
}
def test1():
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps1)
time.sleep(1000)
print("127.0.0.1:62001执行完成")
driver.quit()
def test2():
driver = webdriver.Remote("http://127.0.0.1:4727/wd/hub", desired_caps2)
time.sleep(1000)
print("127.0.0.1:62025执行完成")
driver.quit()
threads = []
t1 = threading.Thread(target=test1)
threads.append(t1)
t2 = threading.Thread(target=test2)
threads.append(t2)
if __name__ == '__main__':
# for t in threads:
# t.start()
threading.Thread(target=test1).start()
threading.Thread(target=test2).start()
5.相关问题
这是运行成功的截图

后续再运行的时候出现过appium断开连接的情况,可能是我电脑带不动,理论上配置足够可以多开十几个。
再就是各个模拟器的配置不同,启动速度不同,可能会对多设备并行自动化产生一定影响。