本文轉自:https://www.cnblogs.com/sinder2018/articles/9699801.html
一、滑動屏幕
1、appium - 滑動屏幕
滑動接口:
swipe(起始X,起始Y,結束X,結束Y)
結束X - 起始X:X軸滑動的距離
結束Y - 起始Y:Y軸滑動的距離
Q:手機的屏幕有很多,如何兼容?
2、appium - 上下左右滑動屏幕
原理:
1、先獲取設備的屏幕大小(長、寬)
2、在設置滑動的距離與屏幕大小的百分比。
3、調用滑動接口執行滑動操作
獲取當前窗口大小的接口:
get_window_size:返回窗口的寬和高
滑動接口:
swipe(起始X,起始Y,結束X,結束Y)
二、appium - 模擬觸屏
TouchAction類:
將一系列的動作放在一個鏈條中,然后將該鏈條傳遞給服務器。服務器接收到該鏈條后,解析各個動作,逐個執行。
短按(press)
長按(longPress)
點擊(tap)
移動到(move_to) x,y相對上一個坐標的移動位置
等待(wait)
釋放(release)
執行(perform)
取消(cancel)
三、安裝/卸載/關閉/啟動
啟動Activity:
driver.start_activity()
在當前app打開一個activity,或者新打開一個應用並啟動一個activity,僅支持Android。
安裝應用:
driver.install_app('path/to/my.apk')
卸載應用:
driver.remove_app('com.example.android.apis')
關閉應用:
driver.close_app()
應用是否已安裝:檢測應用是否已被安裝。
driver.is_app_installed('com.example.android.apis')
四、拉取/推送文件
拉取(pull)文件
從設備上拉取文件。
driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
推送(push)文件
推送文件到設備
data="same data for the file"
path="/data/local/tmp/file.txt"
driver.push_file(path,data.encode("base64"))
五、鎖定/將應用切換至后台
鎖定屏幕(IOS):
driver.lock(秒)
將應用切換至后台:
background_app({"timeout":secs})
將當前的應用切換到后台,然后可以讓其在指定時間內回到前台,或者讓它一直留在后台。
傳遞這個方法的參數有兩種類型:
一個整型(秒):表示后台維持多久。-1表示持續置於后台。這種風格的參數已被棄用。
一個看起來像{"timeout":secs}對象。里面secs是含義和第一個類型一樣的整型數字,(即表示置於后台多少秒),或者為null(表示持續置於后台)
driver.background_app(5)#置於后台,持續5秒
driver.background_app(-1)#持續置於后台
driver.background_app({"timeout":None})#持續置於后台
六、打開通知欄/搖一搖
打開通知欄:
僅支持Android。
driver.open_notifications()
搖一搖:
模擬搖晃設備的操作:
driver.shake()
七、手勢操作
捏(Pinch)手勢:在屏幕上使用捏(Pinch)手勢
driver.pinch(element=el)
放大屏幕(Zoom):在屏幕上使用放大手勢
driver.zoom(element=el)
flick(self,start_x,start_y,end_x,end_y,):從屏幕A點快速滑動到B點
drag_and_drop(self,origin_el,destination_el):把控件origin_el拖拽到destination_el的位置
八、按鍵操作
按鍵發送(Android)
driver.press_keycode(鍵的keycode)

九、上下文切換
1、可用的上下文(Contexts)
列出所有可用的上下文(contexts)
driver.contexts
2、當前上下文(context):列出當前的上下文(context)
driver.current_context
3、切換至默認的上下文(context)
切換回默認的上下文(context).(譯者注:一般就是原生上下文“native_app")
driver.switch_to.context(None)
4、當前Activity:獲取當前的Activity。僅支持Android.
driver.current_activity
5、當前包名(package):獲取當前包名(package)。僅支持Android.
driver.current_package
十、H5識別 - webview
tips:
1、在手機\模擬器中點擊關於手機的版本號5下,出來開發者選項
2、在開發者選項中勾選上顯示布局界面
3、如果是HTML的界面,那界面不會有布局界面顯示,如果有則說明是native的界面
adb shell dumpsys activity | find "mFocusedActivity" ----查看前台應用activity名
十一、常見問題
contexts只能獲取NATIVE_APP,無法獲取WEBVIEW
使用uiautomatorview定位元素,顯示class值為:android.webkit.WebView
但是driver.contexts只打印出了"NATIVE_APP"
解決方法:
1、APP打包的時候需要開啟webview的debug屬性setWebContentDebuggingEnabled(true)
這個直接讓開發加上就好
2、模擬器的contexts中有webview,但是有些手機沒有,官方給出的答案是:需要將手機root,然后再去獲取
