码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2020-03-24 11:16:09      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:from   bat   场景   star   引入   for   多进程并发   执行   并发   

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

标签:from   bat   场景   star   引入   for   多进程并发   执行   并发   

原文地址:https://www.cnblogs.com/bugbreak/p/12553638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!