十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“appium常用元素定位技巧是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Appium對于處理原生的android應(yīng)用直接通過uiautomatorviewer.bat這個(gè)工具來獲取元素定位。
在開始appium元素定位的話題之前,首先讓我們了解下appium的一些基礎(chǔ)知識(shí):
一、測試對象
appium 是一個(gè)自動(dòng)化測試開源工具,支持iOS和 Android平臺(tái)上的原生應(yīng)用,web應(yīng)用和混合應(yīng)用。
移動(dòng)原生應(yīng)用:單純用ios或者android開發(fā)語言編寫的、針對具體某類移動(dòng)設(shè)備、可直接被安裝到設(shè)備里的應(yīng)用,一般可通過應(yīng)用商店獲??;
移動(dòng)web應(yīng)用:使用移動(dòng)瀏覽器訪問的應(yīng)用(appium支持iOS上的Safari和Android上的 Chrome),不需要下載到設(shè)備上,而是通過瀏覽器直接訪問;
混合應(yīng)用:同時(shí)使用網(wǎng)頁語言與程序語言開發(fā),通過應(yīng)用商店區(qū)分移動(dòng)操作系統(tǒng)分發(fā),用戶需要安裝使用的移動(dòng)應(yīng)用。
二、支持平臺(tái)及語言
appium是跨平臺(tái)的,支持OSX,Windows以及Linux系統(tǒng)。它允許測試人員在不同的平臺(tái)(iOS,Android)使用同一套API來寫自動(dòng)化測試腳本,這樣大大增加了iOS和Android測試套件間代碼的復(fù)用性
appium支持多語言,采用C/S設(shè)計(jì)模式,只要滿足client能夠發(fā)送http請求給server即可
三、元素定位
1.格式:find_element_by_定位方式(value)
我根據(jù)手機(jī)自帶的計(jì)算器來解釋
通過id定位
通過工具獲取到按鈕的 resource-id
driver.find_element_by_id('resource-id')
實(shí)例: driver.find_element_by_id(' com.android.bbkcalculator:id/clear')
通過class定位
通過工具獲取到按鈕的class
driver.find_element_by_class_name('class')
實(shí)例: driver.find_element_by_class_name(' android.widget.ImageButton ')
通過text定位
appium1.5及之后的版本廢棄了name屬性(如name=百度一下,需要使用uiautomator的定位方式,使用text的內(nèi)容)
driver.find_element_by_android_uiautomator("text(\中文\)")
實(shí)例:driver.find_element_by_android_uiautomator ("text(\"百度一下\")")
備注:需要確認(rèn)這個(gè)中文是當(dāng)前頁面唯一值,否則還是定位不到,注意寫法,不是直接把中文復(fù)制進(jìn)去
通過xpath定位
driver.find_element_by_xpath("xpath內(nèi)容 ")
實(shí)例:driver.find_element_by_xpath("http://android.widget.FrameLayout/android.widget.ImageButton[4]")
以下方式暫時(shí)沒有用到,如果有問題以后會(huì)更改
通過accessibility_id
在UI Automator Viewer界面上并沒有找到這個(gè)字段,這個(gè)對應(yīng)的字段是content-desc
driver.find_element_by_accessibility_id("accessibility_id")
沒有找到實(shí)例,要是自己寫自動(dòng)化的APP碰到了,可以用用
通過css_selector定位(webview)
只適用于webview的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_css_selector()
通過link_text定位(webview)
只適用于webview容器中的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_link_text()
通過name定位
只適用于webview容器中的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_name()
2.定位元素的另一種寫法:find_element(by,value)
find_element_by_方式(value)實(shí)際調(diào)用的都是find_element(by,value)
需要導(dǎo)入這個(gè)包:from selenium.webdriver.common.by import By
例如:定位id為ag2的元素
方式一:driver.find_element_by_id("ag2”)
方式二:driver.find_element(By.ID,"ag2")
這個(gè)操作的好處是可以直接把操作的by和value放到一個(gè)元組里,然后調(diào)用通用方法來傳參獲得元素結(jié)果。
cateid=(By.ID,"ag2")
driver.find_element(*cateid).click()
by的操作可以是:
By.ID 相當(dāng)于by_id
By.CLASS_NAME 相當(dāng)于by_class_name
By.XPATH 相當(dāng)于by_xpath
By.NAME 相當(dāng)于by_name
By.TAG_NAME 相當(dāng)于by_tag_name
By.CSS_SELECTOR 相當(dāng)于by_css_selector
By.LINK_TEXT 相當(dāng)于by_link_text
3.find_elements_by_定位方式(value)返回元素?cái)?shù)組
用法與find_element_by_方式(value)一致,但是返回一個(gè)數(shù)組??梢酝ㄟ^數(shù)組的索引來訪問具體的某個(gè)結(jié)果。
例如:通過class_name定位到多個(gè)元素,我想點(diǎn)擊第一個(gè)元素
driver.find_elements_by_class_name("android.widget.RelativeLayout”)[0].click()
4.返回元素?cái)?shù)組的另一種寫法:find_elements(by,value)
用法與find_element(by,value)一致,但是返回一個(gè)數(shù)組??梢酝ㄟ^數(shù)組的索引來訪問具體的某個(gè)結(jié)果。
例如:通過class_name定位到多個(gè)元素,我想點(diǎn)擊第一個(gè)元素
driver.find_elements(By.CLASS_NAME,"android.widget.RelativeLayout”)[0].click()
5.通過元素定位元素
可以先找到某個(gè)元素,然后再進(jìn)一步定位元素
find_element_by_class_xpath(“xxx”).find_element_by_name(“yyy")
四、元素操作
找到元素后可以對元素進(jìn)行的操作,例如上面講的進(jìn)一步定位元素
1.click()
//點(diǎn)擊操作
也可以用tab實(shí)現(xiàn)點(diǎn)擊操作
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ae8").click()
2.clear()
//清空輸入框內(nèi)容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").clear()
3.send(xx)
//輸入框內(nèi)輸入內(nèi)容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").send_keys("test content")
4.text
//獲得元素的text內(nèi)容
print(driver.find_element_by_xpath(" //android.widget.LinearLayout[1]//xxx").text)
“appium常用元素定位技巧是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!