Appium Python 五:元素定位

來源:互聯網
上載者:User

標籤:擴充   style   部分   教程   分享   access   css_   ati   測試   

總結單個元素定位:

driver.find_element_by_accessibility_id(id)
driver.find_element_by_android_uiautomator(uia_string)
driver.find_element_by_class_name(name)
driver.find_element_by_css_selector(css_selector)
driver.find_element_by_id(id_)
driver.find_element_by_ios_predicate(predicate_string)
driver.find_element_by_ios_uiautomation(uia_string)
driver.find_element_by_link_text(link_text)
driver.find_element_by_name(name)
driver.find_element_by_partial_link_text(link_text)
driver.find_element_by_tag_name(name)
driver.find_element_by_xpath(xpath)

多個元素定位:

driver.find_elements_by_accessibility_id(id)
driver.find_elements_by_android_uiautomator(uia_string)
driver.find_elements_by_class_name(name)
driver.find_elements_by_css_selector(css_selector)
driver.find_elements_by_id(id_)
driver.find_elements_by_ios_predicate(predicate_string)
driver.find_elements_by_ios_uiautomation(uia_string)
driver.find_elements_by_link_text(text)
driver.find_elements_by_name(name)
driver.find_elements_by_partial_link_text(link_text)
driver.find_elements_by_tag_name(name)
driver.find_elements_by_xpath(xpath)

其他:

還有兩個私人的方法:

driver.find_element(by, value)

driver.find_elements(by, value)

 

單個元素定位和多個元素定位的區別就是,單個元素定位返回是單個元素,多個元素定位返回的是包含多個元素的一個列表。

這裡其他部分的私人方法,因為屬於私人的,一般不直接使用。

詳細介紹1. find_element_by_id

用法:通過元素id來尋找元素

樣本:driver.find_element_by_id(‘com.android.calculator2:id/digit8‘)

這裡元素id和 UIAutomatorView 中該元素的 resource id是一致的。

這裡需要注意的是,Android 4.3 以上系統才會有 resource id。我嘗試過 Android 4.2.2系統,結果resource id這裡一直是空。

 

2. find_element_by_accessibility_id(id)

樣本:driver.find_element_by_accessibility_id("delete")

這裡的accessibility id 跟 UIAutomatorView 中該元素的 content-desc 是一致的。

 

3. find_element_by_name(name)

用法:通過元素 name 來尋找元素

樣本:driver.find_element_by_name("Create a new contact")

這裡的name跟 UIAutomatorView 中該元素的 Text是一致的。

需要注意的是,最好不要用這種定位方法,因為 Appium v1.0 已經不建議使用通過name進行定位的方式。

 

4. find_element_by_class_name(name)

用法:通過元素class name來尋找元素

樣本:driver.find_element_by_class_name("android.widget.Button")

這裡的class name跟 UIAutomatorView 中該元素的 class 是一致的。

需要注意的是,由於 class name不是唯一的,所以可能存在一個頁面上有多個元素具有相同的class name。

 

5. find_element_by_xpath(xpath)

用法:通過元素xpath來尋找元素

樣本:driver.find_element_by_xpath("//android.widget.Button[@text=‘8‘]")

通過xpath進行定位的好處是,比較絕對,任何一個元素都可以通過xpath進行定位。

原始的uiautomatorView是看不到 xpath這個屬性的,網上有擴充uiautomatorView使其直接顯示xpath的教程。

可以直接下載擴充版的 LazyUiAutomatorViewer:自動化測試中級篇——LazyUiAutomatorViewer外掛程式開發和使用說明

擴充版本的LazyUiAutomatorViewer可以看到最下方有xpath屬性。當然如果熟悉xpath文法,自己也可以直接通過層次關係寫出元素的xpath。

6. find_element_by_android_uiautomator(uia_string)

用法:通過 UiAutomator 中的定位來進行定位

樣本:driver.find_element_by_android_uiautomator(‘new UiSelector().resourceId("com.android.calculator2:id/digit8")‘)

這裡可以通過UiSelector()的多種方式進行定位,上面只是舉例採用了 resourceId而已。

 

其他定位方式

find_element_by_css_selector(css_selector)

find_element_by_tag_name(name)

find_element_by_link_text(link_text)

find_element_by_partial_link_text(link_text)

Appium Python 五:元素定位

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.