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

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

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

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

 3.设置初始配置信息。

from appium import webdriver
  import threading
  # 设备一
  def run_01():
      desired = {
          "platformName": "Android",  # 手机系统
          "platformVersion": "7.1.2",  # 手机系统版本
          "deviceName": '127.0.0.1:62001',  # 连接的设备(adb devices)
          "automationName": "UiAutomator2",
          "appPackage": "",  # app包名
          "appActivity": "",  # app的启动页面
          "autoGrantPermissions": "true",  # 默认允许app获取相关权限
          "noReset": True  # 保留登录模式
      }
      driver_01 = webdriver.Remote(command_executor="http://127.0.0.1:4723/wd/hub", desired_capabilities=desired)
      # driver(driver_01)
  # 设备二
  def run_02():
      desired = {
          "platformName": "Android",  # 手机系统
          "platformVersion": "11",  # 手机系统版本
          "deviceName": '90bf8faf',  # 连接的设备(adb devices)
          "automationName": "UiAutomator2",  # 自动化测试框架 (1.4以上的appium不用写)
          "appPackage": "",  # app包名
          "appActivity": "",  # app的启动页面
          "autoGrantPermissions": "true",  # 默认允许app获取相关权限
          "noReset": True  # 保留登录模式
      }
      driver_02 = webdriver.Remote(command_executor="http://127.0.0.1:4720/wd/hub", desired_capabilities=desired)
      # driver(driver_02)

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

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

def driver(drivers):  # 元素操作方法
      time.sleep(5)
      drivers.quit()

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

  if __name__ == '__main__':
      threading.Thread(target=run_01).start()
      threading.Thread(target=run_02).start()

6.启动appium服务

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

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

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

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

[{
          "url": "http://127.0.0.1:4723/wd/hub",
          "desired": {
                  "platformName": "Android",
                  "platformVersion": "7.1.2",
                  "deviceName": "127.0.0.1:62001",
                  "automationName": "UiAutomator2",
                  "appPackage": "",
                  "appActivity": "",
                  "autoGrantPermissions": "true",
                  "noReset": true}
      }, {
          "url": "http://127.0.0.1:4720/wd/hub",
          "desired":{
                  "platformName": "Android",
                  "platformVersion": "11",
                  "deviceName": "90bf8faf",
                  "automationName": "UiAutomator2",
                  "appPackage": "",
                  "appActivity": "",
                  "autoGrantPermissions": "true",
                  "noReset": true}
      }]

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

def test_run(url, desired):
      driver_02 = webdriver.Remote(command_executor=url, desired_capabilities=desired)
      driver(driver_02)
  def driver(drivers):  # 元素操作方法
      time.sleep(5)
      drivers.quit()
  if __name__ == '__main__':
      with open("./appium.json", mode="r", encoding="utf-8") as f:
          data = list(json.load(f))
      for i in range(0, len(data)):
          a = threading.Thread(target=test_run, args=(data[i]["url"], data[i]["desired"]))
          a.start()
​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值