python+Appium自动化:python多线程多并发启动appium服务
Posted bug无处不在
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+Appium自动化:python多线程多并发启动appium服务相关的知识,希望对你有一定的参考价值。
Python启动Appium 服务
使用Dos命令或者bat批处理来手动启动appium服务,启动效率低下。如何将启动Appium服务也实现自动化呢?
这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值。subprocess模块官方文档
场景
使用Python启动2台appium服务,端口配置如下:
- Appium服务器端口:4723,bp端口为4724
- Appium服务器端口:4725,bp端口为4726
说明:bp端口( –bootstrap-port)是appium和设备之间通信的端口,如果不指定到时无法操作多台设备运行脚本
工程文件中新建一个文件夹
新建multi_subprocess.py
# -*- coding: utf-8 -*-# import subprocess from time import ctime def appium_start(host,port): # bp端口( –bootstrap-port)是appium和设备之间通信的端口 bootstrap_port = str(port + 1) cmd = \'start /b appium -a \' + host + \' -p \'+ str(port) + \' -bp \' + str(bootstrap_port) print(\'%s at %s\' % (cmd, ctime())) subprocess.Popen(cmd, shell=True, stdout=open(\'../appiumlog/\'+str(port)+\'.log\', \'a\'), stderr=subprocess.STDOUT) if __name__ == \'__main__\': host = \'127.0.0.1\' port = 4723 appium_start(host,port)
效验是否成功 :
1.cmd中输入netstat -ano | findstr 端口号(4723)
2. 在appiumlog路径中生成4723.log日志文件
终止appium服务
taskkill -f -pid appium进程,如下:
多个appium服务启动
if __name__ == \'__main__\': host = \'127.0.0.1\' for i in range(2): port=4723+2*i appium_start(host,port)
多进程并发启动appium服务
上面还不是并发执行启动appium,因此需要使用多进程来实现并发启动。
同样需要引入multiprocessing多进程模块。
muti_appium_sync.py
import multiprocessing import subprocess from time import ctime def appium_start(host, port): bootstrap_port = str(port + 1) cmd = \'start /b appium -a \' + host + \' -p \' + str(port) + \' --bootstrap-port \' + str(bootstrap_port) print(\'%s at %s\' % (cmd, ctime())) subprocess.Popen(cmd, shell=True,stdout=open(\'./appiumlog/\'+str(port)+\'.log\', \'a\'), stderr=subprocess.STDOUT) #构建appium进程组 appium_process=[] #加载appium进程 for i in range(2): host=\'127.0.0.1\' port = 4723 + 2 * i appium=multiprocessing.Process(target=appium_start, args=(host, port)) appium_process.append(appium) if __name__ == \'__main__\': #并发启动appium服务 for appium in appium_process: appium.start() for appium in appium_process: appium.join()
以上是关于python+Appium自动化:python多线程多并发启动appium服务的主要内容,如果未能解决你的问题,请参考以下文章
Appium+python自动化8-Appium Python API
python+appium自动化测试 —— Appium并发测试之python启动appium服务