1. 程式人生 > >appium自動化測試- 元素操作

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,然後再去獲取