appium+python自動化62-命令列啟動和關閉appium服務
阿新 • • 發佈:2018-11-10
前言
做app自動化測試比較繁瑣的一點是每次都要去啟動appium服務,然後跑完之後關閉appium服務。雖然在cmd裡面可以使用命令列的appium服務版本,開啟cmd啟動還是不太方便
不能做到真正自動化開啟和關閉。為了解決這個問題,可以用python寫個指令碼去開啟和關閉appium服務
啟動appium服務
appium的命令列啟動方式參考這篇【appium+python自動化59-appium命令列引數】
python執行cmd指令,可以使用os.system()方法,為了防止重複啟動服務,可以先判斷該埠是不是已經啟動了,寫個判斷函式
# coding:utf-8 import os import time def start_appium(port=4723, udid="", a="127.0.0.1"): ''' 執行cmd指令,啟動appium服務 ''' if not is_appium_start(port): if udid == "": os.system("appium -a %s -p %s --no-reset" %(a, port)) else: os.system("appium -a %s -p %s -U %s --no-reset" %(a, port, udid)) else: pass def is_appium_start(port=4723): '''判斷埠是否已經啟動''' r = os.popen('netstat -ano | findstr "%s" ' % port) time.sleep(2) t = r.read() if "LISTENING" in t: print("appium服務已經啟動:%s"%t) return True else: return False
os.popen()跟os.system()都是執行cmd指令,不同的是os.popen()可以獲取到cmd控制檯輸出的內容
殺掉appium程序
先在4725埠啟動appium服務
C:\Users\dell>appium -p 4725 (node:3704) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. [Appium] Welcome to Appium v1.9.0 [Appium] Non-default server args: [Appium] port: 4725 [Appium] Appium REST http interface listener started on 0.0.0.0:4725
根據埠號查pid:netstat -aon|findstr 埠號
C:\Users\dell>netstat -aon|findstr 4725
TCP 0.0.0.0:4725 0.0.0.0:0 LISTENING 14528
根據查詢到的pid強行終止程序:taskkill /f /pid pid號
C:\Users\dell>taskkill /f /pid 14528
成功: 已終止 PID 為 14528 的程序。
python程式碼實現
# 接著上面程式碼 def kill_appium(port=4723): '''殺掉埠為port的程序''' p = os.popen('netstat -ano | findstr "%s" ' % port) # 根據埠查pid t = p.read() if "LISTENING" in t: s = str(t).split(" ") s1 = [i for i in s if i != ''] pid = s1[-1].replace("\n", "") print("埠 %s 執行 pid: %s" % (port, pid)) os.system("taskkill /f /pid %s" % pid) print("強行終止:taskkill /f /pid %s" % pid) else: pass if __name__ == "__main__": start_appium(port=4723, udid="", a="127.0.0.1") is_appium_start(port=4723) kill_appium(4723)
上海-悠悠 QQ交流群:330467341