手機控制元件查看工具uiautomatorviewer
工具簡介
用來掃描和分析Android應用程式的UI控制元件的工具.
如何使用
1.進入SDK目錄下的tools目錄,打開uiautomatorviewer
2.電腦連接真機或打開android模擬器
3.啟動待測驗app
4.點擊uiautomatorviewer的左上角Device Screenshot,會生成app當前頁面的UI控制元件截圖

5.選擇截圖上需要查看的控制元件,即可瀏覽該控制元件的id,class,text,坐標等資訊

APP元素定位操作
Appium常用元素定位方式
前置代碼
from appium import webdriver
# server 啟動引數
desired_caps = {}
# 設備資訊
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app的資訊
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 宣告我們的driver物件
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
通過id定位
方法:find_element_by_id(id_value) # id_value:為元素的id屬性值
業務場景:
1.進入設定頁面
2.通過ID定位方式點擊搜索按鈕
通過class定位
方法:find_element_by_class_name(class_value) # class_value:為元素的class屬性值
業務場景:
1.進入設定頁面
2.通過搜索按鈕
3.通過class定位方式點擊輸入框的回傳按鈕
通過xpath定位
方法:find_element_by_xpath(xpath_value) # xpath_value:為可以定位到元素的xpath陳述句
*** android端xptah常用屬性定位:
1. id ://*[contains(@resource-id,'com.android.settings:id/search')]
2. class ://*[contains(@class,'android.widget.ImageButton')]
3. text ://*[contains(@text,'WLAN')]
*** 模糊定位 contains(@key,value): value可以是部分值
業務場景:
1.進入設定頁面
2.點擊WLAN選單欄
定位一組元素,注意element -> elements
應用場景為元素值重復,無法通過元素屬性直接定位到某個元素,只能通過elements方式來選擇,回傳一個定位物件的串列.

WebDriverWait 顯示等待操作
在一個超時時間范圍內,每隔一段時間去搜索一次元素是否存在,
如果存在回傳定位物件,如果不存在直到超時時間到達,報超時例外錯誤,
方法:WebDriverWait(driver, timeout, poll_frequency).until(method)
引數:
1.driver:手機驅動物件
2.timeout:搜索超時時間
3.poll_frequency:每次搜索間隔時間,默認時間為0.5s
4.method:定位方法(匿名函式)
使用示例:
WebDriverWait(driver, timeout, poll_frequency).until(lambda x: x.find_elements_by_id(id_value))
解釋:
1.x傳入值為:driver,所以才可以使用定位方法.
函式運行程序:
1.實體化WebDriverWait類,傳入driver物件,之后driver物件被賦值給WebDriverWait的一個類變數:self._driver
2.until為WebDriverWait類的方法,until傳入method方法(即匿名函式),之后method方法會被傳入self._driver
3.搜索到元素后until回傳定位物件,沒有搜索到函式until回傳超時例外錯誤.
業務場景:
1.進入設定頁面
2.通過ID定位方式點擊搜索按鈕
發送資料到輸入框
方法:send_keys(vaue) # value:需要發送到輸入框內的文本
業務場景:
1.進入設定頁面
2.點擊搜索按鈕
3.輸入內容abc
解決輸入中文問題:
1.server 啟動引數增加兩個引數配置
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
清空輸入框內容
方法:clear()

獲取元素的屬性值
方法: get_attribute(value) # value:元素的屬性
業務場景:
1.進入設定頁面
2.獲取搜索按鈕的content-desc屬性值
value='name' 回傳content-desc / text屬性值
value='text' 回傳text的屬性值
value='className' 回傳 class屬性值,只有 API=>18 才能支持
value='resourceId' 回傳 resource-id屬性值,只有 API=>18 才能支持
獲取元素在螢屏上的坐標
方法:location

獲取app包名和啟動名
獲取包名方法:current_package
獲取啟動名:current_activity

APP元素事件操作API
swip滑動事件
從一個坐標位置滑動到另一個坐標位置,只能是兩個點之間的滑動
方法:swipe(start_x, start_y, end_x, end_y, duration=None)
引數:
1.start_x:起點X軸坐標
2.start_y:起點Y軸坐標
3.end_x: 終點X軸坐標
4.end_y,: 終點Y軸坐標
5.duration: 滑動這個操作一共持續的時間長度,單位:ms
業務場景:
1.進入設定頁面
2.從坐標(148,659)滑動到(148,248)
scroll滑動事件
從一個元素滑動到另一個元素,直到頁面自動停止
方法:scroll(origin_el, destination_el)
引數:
1.origin_el:滑動開始的元素
2.destination_el:滑動結束的元素
業務場景:
1.進入設定頁面
2.從存盤選單位置滑動到WLAN選單位置
drag拖拽事件
從一個元素滑動到另一個元素,第二個元素替代第一個元素原本螢屏上的位置
方法:drag_and_drop(origin_el, destination_el)
引數:
1.origin_el:滑動開始的元素
2.destination_el:滑動結束的元素

應用置于后臺事件
APP放置后臺,模擬熱啟動
方法:background_app(seconds)
引數:
1.seconds:停留在后臺的時間,單位:秒

APP模擬手勢高級操作
TouchAction是AppiumDriver的輔助類,主要針對手勢操作,比如滑動、長按、拖動等,
原理是將一系列的動作放在一個鏈條中發送到服務器,服務器接受到該鏈條后,決議各個動作,逐個執行
所有手勢都要通過執行函式才會運行
手指輕敲操作
模擬手指輕敲一下螢屏操作
方法:tap(element=None, x=None, y=None)
方法:perform() # 發送命令到服務器執行操作
引數:
1.element:被定位到的元素
2.x:相對于元素左上角的坐標,通常會使用元素的X軸坐標
3.y:通常會使用元素的Y軸坐標
業務場景:
1.進入設定頁面
2.點擊WLAN選項
手指按操作
模擬手指按下螢屏,按就要對應著離開.
方法:press(el=None, x=None, y=None)
方法:release() # 結束動作,手指離開螢屏
引數:
1.element:被定位到的元素
2.x:通常會使用元素的X軸坐標
3.y:通常會使用元素的Y軸坐標

等待操作
方法:wait(ms=0)
引數:
ms:暫停的毫秒數
業務場景:
1.進入設定頁面
2.點擊WLAN選項
3.長按選項5秒
手指長按操作
模擬手機按下螢屏一段時間,按就要對應著離開.
方法:long_press(el=None, x=None, y=None, duration=1000)
引數:
1.element:被定位到的元素
2.x:通常會使用元素的X軸坐標
3.y:通常會使用元素的Y軸坐標
4.duration:持續時間,默認為1000ms

手指移動操作
模擬手機的滑動操作
方法:move_to(el=None, x=None, y=None)
引數:
1.el:定位的元素
2.x:相對于前一個元素的X軸偏移量
3.y:相對于前一個元素的Y軸偏移量
業務場景:
1.進入設定頁面
2.向上滑動螢屏
練習:
業務場景:
1.進入設定頁面
2.向上滑動螢屏到可見“安全”選項
3.進入到安全
4.點擊螢屏鎖定方式
5.點擊圖案
6.繪制圖案
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/340455.html
標籤:其他
