我们在做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.打开页面后操作元素,这里只简单的关闭页面(具体方法可参考:https://www.cnblogs.com/lihongtaoya/p/16988855.html)

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()
文章来源:https://www.cnblogs.com/lihongtaoya/ ,请勿转载

appium如何连接多台设备的更多相关文章

  1. Appium同时连接多台手机进行测试(多线程)

    作为测试小白,当时遇到了N多问题: 开启多线程后,发现app启动后,用例就停止了:且启动app对应的手机不能正确对应,用例中是A手机跑A用例,结果启动了B手机跑A用例报错. 主要原因:Appium S ...

  2. appium自动化测试框架——自动化启动多台设备思路梳理

    今天,我们聊一聊如果自动化实现在多台设备上运行脚本. 一.首先我们回忆一下如何在一台设备上运行python脚本,一般分为三步 1.启动appium服务 2.创建驱动 3.运行python脚本 同样的, ...

  3. 000 - 准备工作ADB wifi连接多台鸿蒙设备进行调试

    首先将两台鸿蒙设备插入电脑的usb上 查看两台鸿蒙设备的deviceid C:\Users\Administrator>adb devices * daemon not running; sta ...

  4. ios如何一个证书多台设备测试

    在苹果开发者网站申请的证书,是授权mac设备的开发或者发布的证书,这意味着一个设备对应一个证书,但是99美元账号只允许生成3个发布证书,两个开发证书,这满足不了多mac设备的使用,使用p12文件可以解 ...

  5. Android-monkey稳定性测试(多台设备同时进行)

                                       1.目的(原创文章,转载请注明出处-) 主要为指引开展android平台应用的稳定性测试,尽可能地在应用发布前发现crash及an ...

  6. XMPP资源绑定(Resource Binding)与单台设备登录控制

    原文:http://blog.csdn.net/brasbug/article/details/26353511 一个XMPP的账号由三部分组成: 用户名(user/node),域名(domain)和 ...

  7. appium desktop连接模拟器

    1.adb准备好,我建议,下载Androidstudio,因为这样adb是最新的,可能会避免很多问题 2.adb connect 127.0.0.1:xxxx (网易mumu是7555,别的模拟器自行 ...

  8. BluetoothLE-Multi-Library 一个能够连接多台蓝牙设备的库,它可以作为client端,也可以为server端。支持主机/从机,外围设备连接。

    github地址:https://github.com/qindachang/BluetoothLE-Multi-Library BluetoothLE-Multi-Library 一个能够连接多台蓝 ...

  9. Appium自动化如何控制多设备并行执行

    前言: 如何做到,控制多设备并行执行测试用例呢. 思路篇 我们去想下,我们可以获取参数的信息,和设备的信息,那么​我们也可以针对每台设备开启不一样的端口服务.那么每个服务都对应的端口,我们在获取设备列 ...

  10. 【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备

    背景 硬件要求1:PS3 手柄 + 手柄配套的USB线 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备 软件要求1:Sixaxis Compatibility Checker PS3 手柄 ...

随机推荐

  1. 齐博x1token字段,请务加在请求地址的头部header

    如下图所示,你必须在请求的头部加上 token参数,主要原因有两个.第一点,这个是登录标志,因为接口访问用不了cookie,所以只能通过这个header请求标志判断用户是否已经登录.第二点,系统有时候 ...

  2. 基于YOLO和PSPNet的目标检测与语义分割系统(python)

    基于YOLO和PSPNet的目标检测与语义分割系统 源代码地址 概述 这是我的本科毕业设计 它的主要功能是通过YOLOv5进行目标检测,并使用PSPNet进行语义分割. 本项目YOLOv5部分代码基于 ...

  3. 【原创】在RT1050 LittleVgl GUI中嵌入中文输入法框架

    时隔一年多终于又冒泡了,哎,随着工作越来越忙,自己踏实坐下来写点东西真是越来越费劲,这篇文章也是准备了好久好久才打算发表出来(不瞒大家,东西做完好久了,文章憋了一年了,当真"高产" ...

  4. 关于Position Encoding 的理解

    encoding Sinusoidal Position Encoding \[\begin{aligned} P E_{(p o s, 2 i)} &=\sin \left(\frac{p ...

  5. appium 移动端自动化测试工具

    appium 移动端自动化测试工具 appium 移动端自动化测试工具 appium 是哟个自动化测试开源工具 支持ios和安卓平台的应用 以及web应用和混合应用 appium 是一个跨平台的工具: ...

  6. ES6 学习笔记(八)基本类型Symbol

    1.前言 大家都知道,在ES5的时候JavaScript的基本类型有Number.String.Boolean.undefined.object.Null共6种,在es6中,新增了Symbol类型,用 ...

  7. Vue2学习笔记

    1.插值语法: 1.1.功能: 用于解析标签体内容 1.2.写法: {{ xxx }},xxx是js表达式,且可以直接读取到data中的所有属性. 2.收集表单数据 若:<input type= ...

  8. toB应用私有化交付发展历程、技术对比和选型

    由于数据隐私和网络安全的考虑,大多数toB场景的客户需要私有化应用交付,也就是需要交付到客户的环境里,这样的客户有政府.金融.军工.公安.大型企业.特色行业等,这些私有化场景限制很多,如何提高私有化应 ...

  9. lauyi渲染

    下拉框 <div class="layui-form-item x-city" id="start"> <label class=" ...

  10. Scanner例题讲解

    Scanner例题讲解 题:输入多个平均数,求其总和与平均数;每输入一个数用回车确认,通过输入非数字来结束输入并输出执行结果  public class Demo05 {     //输入多个平均数, ...