Python Appium操作
啟動appium:appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone
Appium 服務命令行參數
- 啟動appium
-p 4723
指定端口--log xxx.log
指定日誌保存到指定文件內(可以是絕對路徑)--local-timezone
指定時間為本地時間--log-level error
設置日誌級別,默認是debug- win平臺在命令的開始添加
start /b
,mac平臺在命令的末尾添加&
:表示後臺啟動,不加時,後續的程序無法運行(終端單獨啟動時可以不加)
# win start /b appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone# mac appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone &
關閉appium
- 關閉相應端口對應的進程即可
根據端口號查看進程&關閉相應的進程
win系統
根據端口號查找進程號netstat -o -n -a | findstr :端口號
# 命令 netstat -aon|findstr 4723 # 結果 TCP 127.0.0.1:4723 0.0.0.0:0 LISTENING 3352
終止進程taskkill /F /PID 進程號(PID號)
# 命令 taskkill /f /pid 3352 # 結果 成功: 已終止 PID 為 3352 的進程。
- 終止所有appium進程
taskkill /f /t /im node.exe
mac系統
-
根據端口號查找進程號:
lsof -i tcp: 4723
-
終止進程:
kill 進程號(PID號)
實例代碼
pc = input(‘請輸入系統 win or mac:‘) def stop_appium(post_num=4723): ‘‘‘關閉appium服務‘‘‘ if pc.upper() ==‘WIN‘: p = os.popen(f‘netstat -aon|findstr {post_num}‘) p0 = p.read().strip() if p0 != ‘‘ and ‘LISTENING‘ in p0: p1 = int(p0.split(‘LISTENING‘)[1].strip()[0:4]) # 獲取進程號 os.popen(f‘taskkill /F /PID {p1}‘) # 結束進程 print(‘appium server已結束‘) elif pc.upper() == ‘MAC‘: p = os.popen(f‘lsof -i tcp:{post_num}‘) p0 = p.read() if p0.strip() != ‘‘: p1 = int(p0.split(‘\n‘)[1].split()[1]) # 獲取進程號 os.popen(f‘kill {p1}‘) # 結束進程 print(‘appium server已結束‘) def start_appium(post_num=4723): ‘‘‘開啟appium服務‘‘‘ stop_appium(post_num) # 先判斷端口是否被占用,如果被占用則關閉該端口號 # 根據系統,啟動對應的服務 cmd_dict = { ‘WIN‘:f‘ start /b appium -a 127.0.0.1 -p {post_num} --log xxx.log --local-timezone ‘, ‘MAC‘:f‘appium -a 127.0.0.1 -p {post_num} --log xxx.log --local-timezone & ‘ } os.system(cmd_dict[pc.upper()]) time.sleep(3) # 等待啟動完成 print(‘appium啟動成功‘)
先記錄自己辛苦百度之後寫出來的東西:
記錄一、長按某個元素的方法
首先導入 TouchAction 包:from appium.webdriver.common.touch_action import TouchAction
然後編寫長按函數:
wait裏的時間單位是毫秒,長按N毫秒釋放
以下是總結的只是碎片:
手機操作方法.API應用
收起鍵盤:driver.hide_keyboard()
啟動Activity參數(包名,activity名字):driver.start_activity(‘com.example.android.apis‘, ‘.Foo‘)
獲取當前Activity:driver.current_activity
截取當前屏幕:driver.get_screenshot_as_file("文件名")
打開通知欄(打開下拉通知欄):driver.open_notifications()
檢查應用是否已經安裝(包名):driver.is_app_installed(‘com.example.android.apis‘)
安裝應用(路徑):driver.install_app(‘path/to/my.apk‘)
刪除應用(包名):driver.remove_app(‘com.example.android.apis‘)
模擬設備搖晃:driver.shake()
關閉應用:driver.close_app()
啟動應用:driver.launch_app()
將app置於後臺A秒:driver.background_app(A)
重置(相當於卸載後重裝):driver.reset()
獲取應用的字符串:driver.app_strings
滑動屏幕(開始x,y坐標,滑動到的X,y坐標,持續時間ms):driver.swipe(startx=75, starty=500, endx=75, endy=0, duration=800)
雙指向內移動縮小屏幕:driver.pinch(element=el)
雙指往外移動來放大屏幕:driver.zoom(element=el)
從設備中拉出文件:driver.pull_file(‘Library/AddressBook/AddressBook.sqlitedb‘)
把文件放到設備中:
data = "some data for the file"
path = "/data/local/tmp/file.txt"
driver.push_file(path, data.encode(‘base64‘))
長按並將A拖拽到B:driver.drag_and_drop(A,B)
將A滾動到B:driver.scroll(A,B)
滑動:driver.swipe() driver.flick()(這個方法速度較快)
使用手機物理鍵
一句代碼:driver.keyevent() 括號裏填入的是手機物理按鍵的數字代號
driver.press_keycode() 括號裏填入的是鍵盤按鍵的數字代號
手機物理鍵數字代碼 鍵盤按鍵數字代號
Python Appium操作