appium--python啟動appium服務


前戲

前面我們都是在cmd下通過輸入appium加端口號來啟動服務的,在我們做自動化的時候,我們當然不希望我們手動啟動appium服務,而是希望通過腳本自動啟動appium服務。

我們可以使用subprocess模塊,該模塊可以創建新的進程,並且連接到進程的輸入,輸出,錯誤等管道信息,並且可以獲取進程的返回值

使用python啟動appium服務,端口配置如下

  • appium服務器端口:4723,bp端口為4724
  • appium服務器端口:4725,bp端口為4726

說明:bp端口(--bootstrap-port)是appium和設備之間通信的端口,如果不指定到時無法操作多台設備 運行腳本

啟動單個服務

import subprocess

def appium_start(host, port):
    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port)
    print(cmd)
    subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)

if __name__ == '__main__':
    host = '127.0.0.1'
    port = 4723
    appium_start(host, port)

結果:

start /b appium -a 127.0.0.1 -p 4723 -bp 4724

使用os模塊啟動

注意:如果端口已經啟動了,在啟動是不會報錯的,放心執行吧,但是如果這個端口被其他服務占用了,則會報錯

import os

def appium_start(host, port):
    bootstrap_port = str(port + 1)
    cmd = 'appium -a %s -p %s'%(host, port)
    os.system(cmd)

if __name__ == '__main__':
    host = '127.0.0.1'
    port = 4723
    appium_start(host, port)

啟動校驗

啟動后我們需要校驗是否啟動成功,校驗方法如下

1.查看有沒有生成對應的log文件,里面的appium日志

2.使用如下命令來查看

netstat -ano | findstr 端口號

netstat命令是一個監控TCP/IP網絡非常有用的工具,它可以顯示路由表,實際的網絡連接以及每一個網絡接口設備的狀態信息,輸入netstat -ano回車,可以查看本機開放的全部端口,輸入命令netstat -h可以查看全部參數含義

關閉appium服務

上面我們啟動了appium的服務,但不能一直不關閉,會消耗我們的系統資源,所以我們一般在執行完自動化之后,希望關閉掉appium服務

關閉服務也有兩種方式

1.通過netstat命令找到對應的appium進程pid然后在資源管理器中關閉

2.使用命令關閉

taskkill -f -pid appium進程id

啟動多個appium服務

上面我們是啟動了一個appium服務,啟動多個服務很簡單,只需要在執行環境中循環調用即可

import subprocess


def appium_start(host, port):
    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port)
    print(cmd)
    subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)

if __name__ == '__main__':
    host = '127.0.0.1'
    port = 4723
    for i in range(2):
        port = 4723+2*i
        appium_start(host, port)

多進程啟動多個appium服務

import subprocess
import multiprocessing

def appium_start(host, port):
    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port)
    print(cmd)
    subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)

appium_process = []  # 進程組

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__':
    for appium in appium_process:
        appium.start()

    for appium in appium_process:
        appium.join()


免責聲明!

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



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