python appium server代碼啓動和關閉遇到的坑

第一次使用博客,小白級,互相交流,有說的不對的地方歡迎來噴!!!node

自動化的目的就是減小人工成本,若是每次跑自動化用例時都要手動起appium客戶端,太費事了~~故,將appium server的調起和關閉寫在代碼中是必要的一步。app

在步驟中說坑。。。(ps:小白的坑,大神可能會嘲笑~~呼呼~~)函數

1.將appium客戶端打開,可以看到啓動server實際上是這句話> Launching Appium server with command: D:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --device-name "MI 3W" --language en --log-no-color,以下圖:測試

須要將node.exe替換成路徑node_modules\appium\。cmd命令其實就是node一下上述的commandspa

2.拿到了命令只要寫入進代碼就好了。這裏用到了os模塊,最簡單的os.system就能夠知足。code

關於路徑的空格、()、\、"的轉義最是坑爹orm

先將D:\Program Files (x86)\鏡像成一個w:,而後轉義\\和\",server

測試機的Android版本對應的appium version和手機device name是測試機獨有屬性,因此定義函數時加了這兩個參數blog

具體代碼以下:進程

# coding=utf-8
import os import time # os.system("subst w: \"D:\Program Files (x86)\"") #鏡像用一次就行,因此我註釋掉了
def start_AppiumS(devicename,level): t = "start node w:\\Appium\\node_modules\\appium\\lib\\server\\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version "+level+" --automation-name Appium --device-name \"" + devicename + "\" --language zh_CN --log-no-color" os.system(t) time.sleep(2) return

 

這裏要刻意強調一下,os.system會阻塞進程,爲避免不影響執行下一步,在命令前面必定要加start


到這裏爲止,啓動appium server已經搞定,下面開始寫殺appium server


 

1.殺appium server主要是在於取得node的進程端口號

可用命令查詢端口號 netstat -aon |findstr 4723

用os.popen獲取執行命令後的返回值,從中提取出須要的pid端口號

說一下此處我遇到的坑吧,先上圖

按4723查到的進程有不少,os.popen獲取後是以字符型存儲的,且有許多空格。此處用了最笨的小白方法,去空格分割字符串~~~~~汗汗汗-_-||

代碼以下:

def kill_AppiumS(): process = os.popen("netstat -aon |findstr 4723").read() pid = process.replace('  ','').split(" ")[2] print(pid) m = os.popen("taskkill -f -pid %s" % pid) print(m.read())

有不對或者須要改進的地方,歡迎大神吐槽~~

相關文章
相關標籤/搜索