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.前置代码

需要注意的地方:

  1. 因为模拟器情况下deviceName没有实际意义,随便填都行,所以需要加上udid来唯一区分
  2. 用下面的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断开连接的情况,可能是我电脑带不动,理论上配置足够可以多开十几个。

再就是各个模拟器的配置不同,启动速度不同,可能会对多设备并行自动化产生一定影响。