快好知 kuaihz

appium 多设备并行运行

# coding=utf-8

from appium import webdriver

import time

import yaml

import os

from tomorrow import threads

def start_appium(port, bootstrap, udid):

a = os.popen("netstat -ano | findstr "%s" " % port)

time.sleep(2)

t1 = a.read()

if "LISTENING" in t1:

print("appium服务已经启动:%s" % t1)

# s = t1.split(" ")

# s1 = [i for i in s if i != ""]

# pip = s1[-1].replace("", "")

else:

# 启动appium服务

# appium -a 127.0.0.1 -p 4740 -U emulator-5554 127.0.0.1:62001 --no-reset

# os.system("start /b appium -a 127.0.0.1 -p %s -U %s --no-reset" % (port, udid))

# appium -a 127.0.0.1 -p 4724 -bp 4725 -U 127.0.0.1:62001

os.system("start /b appium -a 127.0.0.1 -p %s -bp %s -U %s" % (port, bootstrap, udid))

def stop_appium():  # 关闭所有的appium进程

os.system("start /b taskkill /F /t /IM node.exe")

def get_desired_caps(devices_name):

"""

从yaml读取desired_caps配置信息

参数name:设备名称,如:夜神/真机1

:return: desired_caps字典格式

"""

curpath = os.path.dirname(os.path.realpath(__file__))

print("路径为:"+curpath)

yamlpath = os.path.join(curpath, "yaml_appium.yaml")

print("配置地址:%s" % yamlpath)

f = open(yamlpath, "r", encoding="utf-8")

a = f.read()

f.close()

# 把yaml文件转字典

d = yaml.load(a)

print(d)

for ii in d:

print(ii)

if devices_name in ii["desc"]:  # 判断输入的设备名称是否存在

# 启动服务

devicesname = ii["desired_caps"]["udid"]

print("devicesName: %s" % devicesname)

print("port: %s" %ii["port"])

print("bootstrap: %s" % ii["bootstrap-port"])

print("udid: %s" % ii["desired_caps"]["udid"])

start_appium(port=ii["port"], bootstrap=ii["bootstrap-port"], udid=ii["desired_caps"]["udid"])

# start_appium(port=ii["port"], udid=devicesName)

return ii["desired_caps"], ii["port"]

@threads(2)

def run_app(devices_name):

# 配置参数

desired_caps = get_desired_caps(devices_name)

#app测试用例操作

# 执行代码

driver = webdriver.Remote("http://127.0.0.1:%s/wd/hub" % desired_caps[1], desired_caps[0])

if __name__ == "__main__":

devices = ["夜神", "真机1"]

for i in devices:

run_app(devices_name=i)

stop_appium()

yaml 文件内容如下:

- desc: 设备名称_真机1,appium启动服务端口号_4723

port: 4723

desired_caps:

platformName: Android

deviceName: 192.168.93.210:5555

appPackage: com.jifen.qukan.debug

app: C:UsersadminPycharmProjectslocust_testappsqutoutiao_debug.apk

appActivity: com.jifen.qkbase.main.MainActivity

clearSystemFiles: true

noSign: True

noReset:  !!bool False

platformVersion: 4.4.2

udid: 192.168.93.210:5555

newCommandTimeout: 120

bootstrap-port: 4726

- desc: 设备名称_夜神,appium启动服务端口号_4724

port: 4724

desired_caps:

platformName: Android

noSign: True

deviceName: 127.0.0.1:62001

appPackage: com.jifen.qukan.debug

app: C:UsersadminPycharmProjectslocust_testappsqutoutiao_debug.apk

appActivity: com.jifen.qkbase.main.MainActivity

clearSystemFiles: true

noReset:  !!bool False

platformVersion: 4.4.2

udid: 127.0.0.1:62001

newCommandTimeout: 120

bootstrap-port: 4725

================================================

第一台设备:adb tcpip 端口(5555)   adb connect 手机ip:端口(5555)

第二台设备:adb devices 查看手机的udid ,然后adb -s udid tcpip 端口(5556)  adb connect 手机ip:端口(5556)

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:appium 多设备并行运行  并行  并行词条  运行  运行词条  appium  appium词条  设备  设备词条  
综合

 DNS服务器

Windows server 2008之dns服务一,概述DNS(Domain Name System,域名系统):将易于记忆的域名与不容易记忆的IP地址作转换...(展开)

综合

 【菜单版】stata三天写论文!...

选择模型回归主要解决因变量是分类变量的问题。比如,某人是否结婚?那么,如果给分类的因变量加上时间因素,比如,某人何时结婚?该如何解决这类问题?本次专栏生存分析模...(展开)