快生活 - 生活常识大全

多设备并行运行


  # 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)
网站目录投稿:绿露