实例讲解Appium如何连接多台设备

我们在做app自动化的时候,若要考虑兼容性问题,需要跑几台设备,要是一台一台的跑比较耗时,因此需要考虑使用多线程来同时操作多台设备。

1.我们拿两台设备来模拟操作下,使用:adb devices查看连接状况,获取到设备名称。

2.获取需要操作app的包名和页面名称。(前提该设备已经打开了app)

3.设置初始配置信息。

  1.   from appium import webdriver

  2.   import threading

  3.   # 设备一

  4.   def run_01():

  5.    desired = {

  6.    "platformName": "Android", # 手机系统

  7.    "platformVersion": "7.1.2", # 手机系统版本

  8.    "deviceName": '127.0.0.1:62001', # 连接的设备(adb devices)

  9.    "automationName": "UiAutomator2",

  10.    "appPackage": "", # app包名

  11.    "appActivity": "", # app的启动页面

  12.    "autoGrantPermissions": "true", # 默认允许app获取相关权限

  13.    "noReset": True # 保留登录模式

  14.    }

  15.    driver_01 = webdriver.Remote(command_executor="http://127.0.0.1:4723/wd/hub", desired_capabilities=desired)

  16.    # driver(driver_01)

  17.   # 设备二

  18.   def run_02():

  19.    desired = {

  20.    "platformName": "Android", # 手机系统

  21.    "platformVersion": "11", # 手机系统版本

  22.    "deviceName": '90bf8faf', # 连接的设备(adb devices)

  23.    "automationName": "UiAutomator2", # 自动化测试框架 (1.4以上的appium不用写)

  24.    "appPackage": "", # app包名

  25.    "appActivity": "", # app的启动页面

  26.    "autoGrantPermissions": "true", # 默认允许app获取相关权限

  27.    "noReset": True # 保留登录模式

  28.    }

  29.    driver_02 = webdriver.Remote(command_executor="http://127.0.0.1:4720/wd/hub", desired_capabilities=desired)

  30.    # driver(driver_02)

不同的设备启动配置端口号是不一样的,我这里一个是4723,一个是4720。

4.打开页面后操作元素,这里只简单的关闭页面。

  1.   def driver(drivers): # 元素操作方法

  2.    time.sleep(5)

  3.    drivers.quit()

5.使用多线程运行多台设备 

  1.   if __name__ == '__main__':

  2.    threading.Thread(target=run_01).start()

  3.    threading.Thread(target=run_02).start()

6.启动appium服务

启动指令:appium --allow-cors -p 端口号 -U 设备名称。

我这边是两台设备,因此需要启动两个服务,启动完之后就可以运行main函数了。

7.以上实例是将配置信息写在了代码中,若是有十几二十几台设备的话,这种写法有点麻烦,我们可以将配置信息的产生封装在json文件中使用时用load()方法去取参数即可。

1)创建一个json文件存放配置信息。

  1.   [{

  2.    "url": "http://127.0.0.1:4723/wd/hub",

  3.    "desired": {

  4.    "platformName": "Android",

  5.    "platformVersion": "7.1.2",

  6.    "deviceName": "127.0.0.1:62001",

  7.    "automationName": "UiAutomator2",

  8.    "appPackage": "",

  9.    "appActivity": "",

  10.    "autoGrantPermissions": "true",

  11.    "noReset": true}

  12.    }, {

  13.    "url": "http://127.0.0.1:4720/wd/hub",

  14.    "desired":{

  15.    "platformName": "Android",

  16.    "platformVersion": "11",

  17.    "deviceName": "90bf8faf",

  18.    "automationName": "UiAutomator2",

  19.    "appPackage": "",

  20.    "appActivity": "",

  21.    "autoGrantPermissions": "true",

  22.    "noReset": true}

  23.    }]

2)读取配置信息,这里直接贴完整代码了。 

  1.   def test_run(url, desired):

  2.    driver_02 = webdriver.Remote(command_executor=url, desired_capabilities=desired)

  3.    driver(driver_02)

  4.   def driver(drivers): # 元素操作方法

  5.    time.sleep(5)

  6.    drivers.quit()

  7.   if __name__ == '__main__':

  8.    with open("./appium.json", mode="r", encoding="utf-8") as f:

  9.    data = list(json.load(f))

  10.    for i in range(0, len(data)):

  11.    a = threading.Thread(target=test_run, args=(data[i]["url"], data[i]["desired"]))

  12.    a.start()

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值