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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM