APP定位元素幾種方法


APP元素定位和操作

webdriver 提供了八種元素定位方法:

在 Python 語言中對應的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
Appium 完全繼承了 WebDriver 中所定義的這些方法,除此之外對其進行了擴展,以便適合移動端對象的定位與操作

定位詳解

1.常用定位方式:

通過id定位

(取resource-id的值):

driver.find_element_by_id("com.wuba.zhuanzhuan:id/azo")

也可以直接用id后面的內容driver.find_element_by_id("azo")

 

通過class_name定位

(取class的內容)

driver.find_element_by_class_name("android.widget.RelativeLayout")

 

通過xpath定位

(取xpath得內容)

driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.widget.XXX")

 

通過text定位

(需要使用uiautomator的定位方式,使用text的內容)

driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+關注\")")

 

使用這里需要注意一下,通過text定位的結果是個list,不能直接click。所以如果要點擊需要取數組的值,比如下面是點擊找到的第一個元素

driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+關注\")")[0].click()

 

通過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定位

web view容器中的html頁面可以用name定位,native並沒有name屬性

driver.find_element_by_name()

 

2.定位元素的另一種寫法:find_element(by,value)

find_element_by_方式(value)實際調用的都是find_element(by,value)

需要導入這個包:from selenium.webdriver.common.by import By

 

例如:定位id為ag2的元素

方式一:driver.find_element_by_id("ag2”)

方式二:driver.find_element(By.ID,"ag2")

 

這個操作的好處是可以直接把操作的by和value放到一個元組里,然后調用通用方法來傳參獲得元素結果

cateid=(By.ID,"ag2")

driver.find_element(*cateid).click()

 

by的操作可以是:

By.ID   相當於by_id

By.CLASS_NAME  相當於by_class_name

By.XPATH   相當於by_xpath

By.NAME   相當於by_name

By.TAG_NAME   相當於by_tag_name

By.CSS_SELECTOR  相當於by_css_selector

By.LINK_TEXT  相當於by_link_text

 

3.find_elements_by_定位方式(value)返回元素數組

用法與find_element_by_方式(value)一致,但是返回一個數組。可以通過數組的索引來訪問具體的某個結果

 

例如:通過class_name定位到多個元素,我想點擊第一個元素

driver.find_elements_by_class_name("android.widget.RelativeLayout”)[0].click()

 

4.返回元素數組的另一種寫法:find_elements(by,value)

用法與find_element(by,value)一致,但是返回一個數組。可以通過數組的索引來訪問具體的某個結果

 

例如:通過class_name定位到多個元素,我想點擊第一個元素

driver.find_elements(By.CLASS_NAME,"android.widget.RelativeLayout”)[0].click()

 

5.通過元素定位元素

可以先找到某個元素,然后再進一步定位元素

find_element_by_class_xpath(“xxx”).find_element_by_name(“yyy")



免責聲明!

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



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