当前位置:   article > 正文

python+Appium自动化:python多线程多并发启动appium服务

python+Appium自动化:python多线程多并发启动appium服务

Python启动Appium 服务

使用Dos命令或者bat批处理来手动启动appium服务,启动效率低下。如何将启动Appium服务也实现自动化呢?

这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值。

场景

使用Python启动2台appium服务,端口配置如下:

  • Appium服务器端口:4723,bp端口为4724
  • Appium服务器端口:4725,bp端口为4726

说明:bp端口( –bootstrap-port)是appium和设备之间通信的端口,如果不指定到时无法操作多台设备运行脚本

工程文件中新建一个文件夹

新建multi_subprocess.py

  1. # -*- coding: utf-8 -*-#
  2. import subprocess
  3. from time import ctime
  4. def appium_start(host,port):
  5. # bp端口( –bootstrap-port)是appium和设备之间通信的端口
  6. bootstrap_port = str(port + 1)
  7. cmd = 'start /b appium -a ' + host + ' -p '+ str(port) + ' -bp ' + str(bootstrap_port)
  8. print('%s at %s' % (cmd, ctime()))
  9. subprocess.Popen(cmd, shell=True, stdout=open('../appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)
  10. if __name__ == '__main__':
  11. host = '127.0.0.1'
  12. port = 4723
  13. appium_start(host,port)

效验是否成功 :

1.cmd中输入netstat -ano | findstr 端口号(4723)

2. 在appiumlog路径中生成4723.log日志文件

终止appium服务

taskkill -f -pid appium进程,如下:

多个appium服务启动

  1. if __name__ == '__main__':
  2. host = '127.0.0.1'
  3. for i in range(2):
  4. port=4723+2*i
  5. appium_start(host,port)

多进程并发启动appium服务

上面还不是并发执行启动appium,因此需要使用多进程来实现并发启动。
同样需要引入multiprocessing多进程模块。

muti_appium_sync.py

  1. import multiprocessing
  2. import subprocess
  3. from time import ctime
  4. def appium_start(host, port):
  5. bootstrap_port = str(port + 1)
  6. cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' --bootstrap-port ' + str(bootstrap_port)
  7. print('%s at %s' % (cmd, ctime()))
  8. subprocess.Popen(cmd, shell=True,stdout=open('./appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)
  9. #构建appium进程组
  10. appium_process=[]
  11. #加载appium进程
  12. for i in range(2):
  13. host='127.0.0.1'
  14. port = 4723 + 2 * i
  15. appium=multiprocessing.Process(target=appium_start, args=(host, port))
  16. appium_process.append(appium)
  17. if __name__ == '__main__':
  18. #并发启动appium服务
  19. for appium in appium_process:
  20. appium.start()
  21. for appium in appium_process:
  22. appium.join()

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/418421
推荐阅读
相关标签
  

闽ICP备14008679号