appium自動化測試- 元素操作
本文轉自: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,然後再去獲取