android设备唯一标识符_appium多进程启动多设备

点击关注,我们共同每天进步一点点!

前戏

在前面我们都是使用一个机器进行测试,在做app自动化的时候,我们要测不同的机型,也就是兼容性测试,如果一台一台设备去执行,那就显的太麻烦了。所以经常需要我们启动多个设备,同时跑自动化测试用例,要跑多个设备时,首先要启动多个appium服务。

启动多个appium服务

在之前我们都是在命令行里输入appium来启动appium服务,这样启动的默认端口是4723,我们可以使用-p参数来指定端口号,输入appium等价与appium -p 4723

启动另一个服务

appium -p 4725

这样我们就启动了两个appium服务。

服务要隔一个数字,如端口为4723,则4724为连接安卓设备的端口号,所以下个服务为4725

appium的参数

appium不止一个参数-p,还有其他的参数

参数                 默认值   含义
-U,--udid            null    连接物理设备的唯一设备标识符
-a,--address         0.0.0.0 监听的ip地址
-p,--port            4723    监听的端口
-bp,--bootstrap-port 4724    连接Android设备的端口号(Android-only)
-g,--log            null    将日志输出到指定文件
--no-reset            false  session之间不重置应用状态
--session-override    false   允许session被覆盖(冲突的话)
--app-activity        null    打开Android应用时,启动的Activity的名字
--app                 null   本地app的路径或远程的安装包

其他的参数可以使用appium -h查看

多设备启动

前提条件:

  1. 连接两个机器

2.启动两个服务

yaml文件

platformName: Android
platforVersion: 6.1.1
deviceName: 127.0.0.1:62001
appPackage: com.jgw.csca
appActivity: com.jgw.csca.view.activity.LoginActivity
unicodeKeyboard: True
resetKeyboard: True
noReset: False
ip: 127.0.0.1
port: 4723

脚本

from appium import webdriver
import yaml

devices_list = ['127.0.0.1:62001', '127.0.0.1:62025']  # 两个设备

'''
udid是设备的,如果是真机,这个必须有,有udid后deviceName就可以随便写一个
port是appium服务的端口,我启动的是4723和4725
'''
def desiredCaps(udid, port):
    with open('../conf/capability.yaml', 'r', encoding='utf-8') as file:
        data = yaml.load(file, Loader=yaml.FullLoader)
    desired_caps = {}
    desired_caps['platformName'] = data['platformName']
    desired_caps['platforVersion'] = data['platforVersion']
    desired_caps['deviceName'] = data['deviceName']
    desired_caps['udid'] = udid
    desired_caps['appPackage'] = data['appPackage']
    desired_caps['appActivity'] = data['appActivity']
    desired_caps['unicodeKeyboard'] = data['unicodeKeyboard']
    desired_caps['resetKeyboard'] = data['resetKeyboard']
    desired_caps['noReset'] = data['noReset']
    driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(port)+ '/wd/hub', desired_caps)
    '''
    第一次启动
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    第二次启动
    driver = webdriver.Remote('http://127.0.0.1:4725/wd/hub', desired_caps)
    '''
    return driver


if __name__ == '__main__':
    desiredCaps(devices_list[0], 4723)
    desiredCaps(devices_list[1], 4725)

这样,第一台设备执行结束之后就会在第二台设备上执行

多进程启动多个设备

可以使用python的多线程或者多进程实现,推荐使用多进程,原因如下

多进程中,同一个变量,各自有一份拷贝存在于每个进程中, 互不影响。而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改, 因此,线程之间共享的数据量最大的危险在于多个线程同一时间修改一个变量,容易把数据给改乱了

前置条件,和上面的一样

from appium import webdriver
import yaml
import multiprocessing

devices_list = ['127.0.0.1:62001', '127.0.0.1:62025']  # 两个设备

def desiredCaps(udid, port):
    with open('../conf/capability.yaml', 'r', encoding='utf-8') as file:
        data = yaml.load(file, Loader=yaml.FullLoader)
    desired_caps = {}
    desired_caps['platformName'] = data['platformName']
    desired_caps['platforVersion'] = data['platforVersion']
    desired_caps['deviceName'] = data['deviceName']
    desired_caps['udid'] = udid
    desired_caps['appPackage'] = data['appPackage']
    desired_caps['appActivity'] = data['appActivity']
    desired_caps['unicodeKeyboard'] = data['unicodeKeyboard']
    desired_caps['resetKeyboard'] = data['resetKeyboard']
    desired_caps['noReset'] = data['noReset']
    driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(port)+ '/wd/hub', desired_caps)

    return driver


desired_process = []  # 存储多设备

for i in range(len(devices_list)):
    port = 4723 + 2*i
    desired = multiprocessing.Process(target=desiredCaps, args=(devices_list[i], port))
    desired_process.append(desired)  # 将设备添加到里面,ip和端口


if __name__ == '__main__':
    for desired in desired_process:
        desired.start()

    for desired in desired_process:
        desired.join()
原文地址: https://www.cnblogs.com/zouzou-busy/p/11440175.html

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值