1. 程式人生 > >Python Appium操作

Python Appium操作

終端 hide 啟動app -- stop bdr orm -a board

啟動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(fnetstat -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(ftaskkill /F /PID {p1}) # 結束進程 print(appium server已結束) elif pc.upper() == MAC: p = os.popen(flsof -i tcp:{post_num}) p0 = p.read() if p0.strip() != ‘‘: p1 = int(p0.split(\n)[1].split()[1]) # 獲取進程號 os.popen(fkill {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:fappium -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操作