Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素
APP移動(dòng)端自動(dòng)化測(cè)試】第三節(jié).UIAutomatorViewer元素定位API操作
(1)應(yīng)用場(chǎng)景
定位元素的時(shí)候必須根據(jù)元素的相關(guān)特征來進(jìn)行定位,而UIAutomatorViewer就是用來獲取元素特征的。
(2)簡(jiǎn)介
UlAutomatorViewer用來掃描和分析Android應(yīng)用程序的UI控件的工具。
(3)使用步驟
1.進(jìn)入SDK目錄下的目錄
mac在tools/bin目錄下,打開uiautomatorviewero
windows在 tools目錄下,打開uiautomatorviewer.bat
2.電腦連接真機(jī)或打開android模擬器
3.啟動(dòng)待測(cè)試app
4.點(diǎn)擊uiautomatorviewer的左上角Device Screenshot (從左數(shù)第二個(gè)按鈕)
5.點(diǎn)擊希望查看的控件
6.查看右下角Node Detail相關(guān)信息
(4)示例
查看《設(shè)置》應(yīng)用程序右上角"放大鏡”按鈕的"resource-id".
實(shí)現(xiàn)步驟:
1.打開uiautomatorviewer
2.打開android模擬器
3.啟動(dòng)《設(shè)置》應(yīng)用程序
4.點(diǎn)擊Device Screenshot按鈕
5.點(diǎn)擊"放大鏡”按鈕
6.查看Node Detail中的"resource-id”信息
注意點(diǎn):
uiautomatorviewer注意點(diǎn)
1.命令行窗口不要關(guān)閉
2.如果uiautomatorviewer 閃退
更換jdk為1.8
3.點(diǎn)擊第二個(gè)按鈕的時(shí)候報(bào)錯(cuò)
重啟adb
adb kill-server
adb start-server
## Selenium元素定位
Selenium是一個(gè)強(qiáng)大的Web應(yīng)用程序測(cè)試工具,也支持Android原生應(yīng)用測(cè)試。通過Selenium,我們可以根據(jù)不同的屬性來定位頁面上的元素,比如ID、類名和XPath表達(dá)式等。
### 單個(gè)元素定位
#通過id定位一個(gè)元素
driver.find_element_by_id('id_value').click()
#通過class_name定位一個(gè)元素
driver.find_element_by_class_name('class_value').send_keys('hello')
#通過xpath定位一個(gè)元素
driver.find_element_by_xpath('//[@content-desc="收起"]').click()
其它示例
1.driver.find_element_by_id("com.android.settings:id/search").click()
2.driver.find_element_by_class_name(" android.widget.EditText").send_keys( "hello")
3.driver.find_element_by_xpath(" / /*[@content-desc='收起"]").click()
總結(jié):
1. find_element_by_id方法中傳入的是Node Detail信息中的resource-id
2. find_element_by_class_name方法中傳入的是 Node Detail 信息中的class
3. find element bv xpath方法中傳入的是Node Detail信息中的xpath表達(dá)式
### 一組元素定位
當(dāng)需要定位多個(gè)具有相同特征的元素時(shí),可以使用以下方法:
- **通過ID定位多元素**:
titles = driver.find_elements_by_id('com.android.settings:id/title')
for title in titles:
print(title.text)
- **通過Class Name定位多元素**:
text_views = driver.find_elements_by_class_name('android.widget.TextView')
for text_view in text_views:
print(text_view.text)
- **通過XPath定位多元素**:
elements = driver.find_elements_by_xpath("http://*[contains(@text, '設(shè)')]")
for element in elements:
print(element.text)
### 元素等待
由于網(wǎng)絡(luò)延遲等因素,有時(shí)頁面元素不會(huì)立即加載完畢。為此,Selenium提供了兩種等待機(jī)制——隱式等待和顯式等待,以避免因元素未加載完成而導(dǎo)致的腳本失敗。
- **隱式等待**:設(shè)置一個(gè)全局超時(shí)時(shí)間,在此時(shí)間內(nèi)如果找不到元素,則拋出異常。
driver.implicitly_wait(10) # 等待10秒
- **顯式等待**:針對(duì)特定條件設(shè)置更精確的等待時(shí)間,超過指定時(shí)間后拋出異常。
from selenium.webdriver.support.ui import WebDriverWait
wait = WebDriverWait(driver, 10)
search_button = wait.until(lambda x: x.find_element_by_xpath("http://*[contains(@content-desc, '收起')]"))
search_button.click()
- 相關(guān)閱讀
- 中國大宗資產(chǎn)交易網(wǎng)
- 連云港汽車門戶網(wǎng)站
- optgroup 標(biāo)簽
- JavaScript實(shí)現(xiàn)文本框提示效果
- 利用css制作簡(jiǎn)易相冊(cè)
- 汽配公司
- 深山旅行社網(wǎng)站管理系統(tǒng) v1.5
- 一個(gè)效果非常不錯(cuò)圖片載入loading等待效果
- 共有0條關(guān)于《Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素》的評(píng)論
- 發(fā)表評(píng)論
您發(fā)布的評(píng)論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會(huì)、集體和公民的合法權(quán)益;
二、不得發(fā)布國家法律、法規(guī)明令禁止的內(nèi)容;互相尊重,對(duì)自己在本站的言論和行為負(fù)責(zé);
三、本站對(duì)您所發(fā)布內(nèi)容擁有處置權(quán)。
- 更多>>同類信息
- Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素
- python通過代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎
- windows7環(huán)境下安裝配置jdk
- python對(duì)微信操作要用到這兩個(gè)庫wxpy與itchat
- 8種Python字符串拼接的方法,你知道幾種
- 更多>>最新添加文章
- dw里面查找替換使用正則刪除sqlserver里面的CONSTRAINT
- Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素
- 抖音直播音掛載小雪花 懂車帝小程序
- javascript獲取瀏覽器指紋可以用來做投票
- 火狐Mozilla Firefox出現(xiàn):無法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無法訪問 問題解決集合處理辦法
- 在Android、iOS、Windows、MacOS中微信小程序的文件存放路徑
- python通過代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎
- 更多>>隨機(jī)抽取信息
- 網(wǎng)頁鏈接十字顯示就像CAD十字做標(biāo)一樣,效果非常好
- 程序員在網(wǎng)站設(shè)計(jì)時(shí)應(yīng)注意的SEO細(xì)節(jié)
- 各種錢貨幣字母轉(zhuǎn)換對(duì)應(yīng)的符號(hào)
- uni-app:使用uni.downloadFile下載word或pdf文件并保存到手機(jī)
- 利用css設(shè)置div漂浮在底部或頂部
- 沙漠玫瑰旅行社














蘇公網(wǎng)安備 32070502010230號(hào)