appium多機並行測試


在實際應用中需要對多個機型並行測試,節省時間

多機測試的思路

啟動多個appium server與多台機器交互(android和ios均可)
 
注意:一定要使用node安裝appium的命令行,使用appium命令啟動多個服務
啟動命令時指定server端口號,以及與客戶端交互的各項端口號
 
以下命令都是后台啟動的,使用的mac的后台啟動方式[ nohup 命令 &],如果是windows機使用[start /b 命令]

Android多機的server啟動命令 

startservercmd = "nohup appium  --session-override -a " + address + " -p " +Appium_port +" -bp "+bootstrap_port
+" --selendroid-port "+selendroid_port+" --chromedriver-port " +chromedriver_port+" -U "+deviceid+" "+" --no-reset &"
 
各項說明:
address:啟動server的地址,如果不指定為0.0.0.0
Appium_port:啟動的server的端口號,默認4723
bootstrap_port:與高版本(4.2及以上)android機交互的端口號,默認3724
selendroid_port:與低版本(4.2以下)android機交互的端口號,默認8080
chromedriver_port:與chrome瀏覽器交互的端口號,默認9516
deviceid:設備的id(adb devices查看)
 
注意:android多機啟動server一定要指定-U參數,否則在windows上運行時會拋錯
 
iOS多機的server啟動命令
startservercmd = "start /b appium --session-override -a " + address + " -p " + Appium_port+" --webdriveragent-port “+webdriveragent_port
 
各項說明:
address:啟動server的地址,如果不指定為0.0.0.0
Appium_port:啟動的server的端口號
webdriveragent_port:與iOS客戶端交互的webdriveragent的端口號,默認8010

多進程啟動server命令,客戶端進行連接

通過多進程進行多機測試
定義一個遞增增量,每個進程都在基礎端口號上增加這個遞增增量,保證每個server的端口號不會沖突
 
下面為多進程的代碼,devices為連接的手機的deviceid列表,testsuit()為要執行的case入口
 
if __name__ == "__main__":
    if devices == []:
        log().log("先插入手機再進行測試謝謝!當前需要的手機系統:"+optionsystem)
        sys.exit()
 
    if len(devices) == 1:
        testsuit()
    else:
        from multiprocessing import Process
        port_d=1#各個端口號的差值
 
        for deviceid in devices:
            t=Process(target=testsuit, args=(port_d,))
            t.start()
            port_d =port_d+1
 
說明:port_d就是上面上的定增增量,通過這個變量我們可以加到基礎端口號上(基礎端口號自己寫到一個公共變量里就好,比如appium server用4723)
 
啟動了服務器,就可以通過不同的appium server端口號連接到服務器了
webdriver.Remote('http://127.0.0.1:'+appiumport+'/wd/hub', desired_caps)
 
注意:在windows中啟動多進程一定要把多進程的連接寫到【if __name__ == “__main__”:】下面,否則進行webdriver啟動連接時會被拒絕


免責聲明!

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



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