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服务

Appium+python自动化22-Appium Desktop转载

appium + python编写自动化脚本

Appium+Python实现自动化登录

appium+python自动化脚本