Appium appium 已经能够连接多个设备,但是如何去给每个测试试脚本指定不同的 driver

cheung · 2018年10月02日 · 最后由 troubl_2014 回复于 2021年12月03日 · 2226 次阅读

1,appium 已经启动个端口服务(已完成)
2,appium 已经通过不同的端口连接到多个设备(已完成)
3,只有一套测试脚本
4,开启多线程后,如何给脚本指定不同的 driver ?
整个的设计逻辑是:
已经启动了 appium 的多个服务,分别对应 4723,4724,4725 端口
启动脚本:

uri = [uri1,uri2,uri3]  #分别对应不同appium服务,以appium服务端口区分,'http://127.0.0.1:4723/wd/hub','http://127.0.0.1:4724/wd/hub','http://127.0.0.1:4725/wd/hub'
desired_caps = [desired_caps1,desired_caps2,desired_caps3]  #对应不同的设备,主要以系统版本区分

tt = []

for i, desired_cap in desired_caps.emurate():
      driver = webdriver.Remote(uri[i], desired_cap)
      t = threadding.Thread(target=run)
      t.start()

def run():
      # 执行测试脚本类

run 方法中去执行脚本
问题是:如何将 driver 引入到测试脚本中?
有一些思路:将 driver 写成线程局部变量,然后再各个测试脚本中去引入,没去实际操作过,不知道可不可行,大神来解答一下
在启动脚本中:

t_thread = threading.local()
t_thread.deiver = driver

测试脚本 1,

import t_thread
driver = t_thread.driver

测试脚本 2

import t_thread
driver = t_thread.driver

......

共收到 5 条回复 时间 点赞

问题已经解决,方法:python 的多进程

楼主 您好 我已经并行启动了多个设备,但是测试脚本怎么使用同一个 driver 呢

@cheung
求教大佬开启多线程后,如何给脚本指定不同的 driver ?

@cheung 目前我可以用多进程分别启动两个手机 如何在其中一台手机执行完一个用例之后,切换到另外一台手机执行

请问楼主具体解决方案是什么呢,现在有同样的问题,就是 appium 已可以启动多个服务,并且端口与设备是对应的,但是在执行同一套脚本的时候,怎么把 driver 给到脚本呢
因为框架里,执行脚本的语句是用 pytest 的命令行执行,所以不清楚怎么把 driver 传给 case

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册