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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM