app元素屬性

提示前是p代表屬性,m代表方法
獲取driver屬性
-獲取包名

![]()
-獲取當前app頁面的名稱

![]()
-獲取源代碼
![]()
在app端獲取到的是一個xml頁面
-獲取手機螢屏解析度(尺寸)

獲取到的是一個字典
![]()
-獲取當前頁面的狀態(原生/混合)
![]()
原生界面:![]()
混合界面: ![]()
獲取元素屬性
-獲取元素文本
![]()
![]()
-獲取元素起始x,y坐標(左上角)

結果是一個字典
![]()
-獲取元素尺寸,寬:width 高:height,起始點x,y坐標
![]()
結果是一個字典
![]()
引申:坐標
元素的坐標

可以通過獲取元素的起始坐標,求出元素的中間坐標
頁面的坐標
通過get_window_size獲取,結果是結束點的坐標
所以可以通過百分比,來獲取滑動螢屏的起始和結束坐標點,
比如從螢屏左側滑到右側,可以獲取width的百分之80的位置(width*0.8)作為起始點,height不變,width的百分之20的位置(width*0.2)作為結束點,使用driver.swipe()方法滑動
app操作
app元素的操作跟web基本相同
如,click(),send_keys()等方法,之后只介紹手機上專有的操作,如滑動,縮放等
-點擊操作
這是手機全域的點擊操作,跟元素點擊有所不同
![]()
傳入引數是坐標,是一個串列嵌套元組,可以同時點擊多個坐標,duration是按壓時長
![]()
滑動
通過driver.wipe()方法
必傳的引數有:起始點的x,y坐標,結束點的x,y坐標. 可選引數有:duration,表示滑動的時長
使用滑動的步驟:
1,獲取螢屏的尺寸 width和height

2,從右向左滑
![]()
3,封裝到basepage

單指/多指操作
相當于web里的滑鼠事件
匯入類
![]()
從TouchAction創建物件,相當于創建ActionChains物件
![]()
-點擊 tap

跟driver.tap()不同,事件的tap傳入的引數可以是一個元素,或者是一個坐標,可選引數count是點擊次數
最后要加perform()
-按壓press
![]()
傳入的引數可以是一個元素,或者是一個坐標,通常結合move_to()方法,移動到某個元素或者x,y坐標,然后最后release()松開手指
![]()
最后要加perform()
-長按long_press
跟press一樣用法,引數可以選擇duration,表示按壓的時長
通過MutiAction類實作縮放操作
1,獲取第一個手指的操作
![]()
2,獲取第二個手指的操作
![]()
3,創建MutiAction類的物件
![]()
4,使用add()方法,傳入2個動作
![]()
5,執行操作
![]()
目前只能實作百度地圖等app頁面放大縮小,圖片縮放還沒能實作

進入指定頁面
相當于web中進入指定url
先獲取當前頁面的activity和包名
adb shell dumpsys activity activities | findstr mResumedActivity
使用start_activity方法進入指定頁面
![]()
引數傳入包名和activity名稱
注意:
如果在初始化driver的時候,caps不傳入包名和activity,取而代之是使用start_activtity方法進入app頁面的話,程式運行完畢后不能自動關閉app
快捷鍵操作
快捷鍵kecode值表
Appium---Android的keycode鍵值 - 簡書

把常用的快捷鍵封裝到一個類或者basepage,增加可讀性

![]()

toast彈窗

在web當中,可以按f8暫停,然后定位元素,但是在app中不能暫停
這時候我們要根據組件名稱 class名稱為android.widget.Toast獲取,一個頁面只會出現一個toast
方法1: 根據class
![]()
方法2:根據text屬性
![]()
獲取toast的text文本
![]()
注意:toast元素wait只能用present_of_element_located,不能用visibility
要獲取toast,必須符合一下條件:
1,appium server 要1.63以上
2,caps要定義automationName的值為UiAutomator2 最新版的appium默認使用UiAutomator2
3,UiAutomator2只支持安卓版本 5.0+
4,jdk1.8.64以上.配置JAVA_HOME環境變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398048.html
標籤:AI
上一篇:Android逆向【4】:暴力破解APK簽名校驗,愉快的重新打包微信支付寶APK
下一篇:無法訪問 androidx.activity.result.ActivityResultCaller or ActivityResultRegistryOwner
