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