APPIUM API整理(python)---元素尋找

來源:互聯網
上載者:User

標籤:rem   inpu   linear   time   ons   appium   進入   sel   cap   

最近在學習自動化架構appium,網上找一些API相關資料整理了一下

1.find_element_by_id

find_element_by_id(self, id_):

Finds element within this element‘s children by ID(通過元素的ID定位元素)

:Args: - id_ - ID of child element to locate.

用法 driver. find_element_by_id(“id”)

find_element_by_id方法,是對於那些有id而且可以互相區分的控制項的操作使用,一般通過android sdk 的tools路徑下的uiautomatorviewer.bat內建工具來擷取,

使用這個工具首先要確保前面環境配置ok,然後確定測試機器或android模擬器處於串連狀態(cmd上輸入adb devices),下面是使用uiautomatorviewer.bat工具

擷取resource-id

代碼舉例:

#點擊天氣應用driver.find_element_by_id(‘com.huawei.android.totemweather:id/mulan_widget_currentweather_smallicon‘).click()  

 2.find_element_by_xpath

find_element_by_xpath(self, xpath):

Finds element by xpath(通過Xpath定位元素,詳細方法可參閱http://www.w3school.com.cn/xpath/ )

```:Args:xpath - xpath of element to locate. "//input[@class=‘myelement‘]"Note: The base path will be relative to this element‘s location.This will select the first link under this element.::myelement.find_elements_by_xpath(".//a")However, this will select the first link on the page.::myelement.find_elements_by_xpath("//a")```

用法 find_element_by_xpath(“//*”)

find_element_by_xpath方法也需要使用uiautomatorviewer.bat工具來定位控制項,如所示右邊相機控制項id為空白,這時就需要使用xpath來定位元素了,

我們可以使用xpath用text和index來定位元素,可以這樣定位相機: 

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘相機‘)]")driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]")

如的圖庫那個控制項index和天氣溫度控制項是相同的,都是index=7,就只能用text或text與index結合了,如:

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘圖庫‘)]")driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘圖庫‘)[email protected]=‘7‘]")

上面的代碼就可以這樣寫 

# -*-coding=utf-8 -*-from appium import webdriverimport timedesired_caps = {‘platformName‘ : ‘Android‘,‘deviceName‘ : ‘76P4C15813005463‘,‘platformVersion‘ : ‘5.1‘,#測試apk包名‘appPackage‘ : ‘com.huawei.android.launcher‘,#測試apk的launcherActivity‘appActivity‘ : ‘.Launcher‘,}#進入android系統launcherdriver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘,desired_caps)time.sleep(5)#從launcher主介面進入相機應用並退出的兩種方法driver.keyevent(‘3‘)#xpath使用text定位控制項driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘相機‘)]").click()time.sleep(2)driver.keyevent(‘3‘)time.sleep(2)#xpath使用index定位控制項driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]").click()time.sleep(2)driver.keyevent(‘3‘)time.sleep(2)#從launcher主介面進入圖庫應用並退出的兩種方法#xpath使用text定位控制項driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘圖庫‘).click()time.sleep(2)driver.keyevent(‘3‘)time.sleep(2)#xpath使用text與index一起定位控制項driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘圖庫‘)[email protected]=‘7‘]").click()time.sleep(5)driver.keyevent(‘3‘)time.sleep(2)driver.quit()

 3. find_element_by_name

find_element_by_name(self, name):

Finds element within this element‘s children by name【通過元素Name定位(元素的名稱屬性text)】

:Args: - name - name property of the element to find.

 

用法: driver.find_element_by_name(“name”)

find_elements_by_name方法的控制項元素也需要使用uiautomatorviewer.bat工具來定位,如上面例子中帶有text資訊的控制項就可以直接使用,如

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘相機‘)]")driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]") 

可以使用

driver.find_element_by_name(‘相機‘)

指令碼如下

from appium import webdriverimport timedesired_caps = {‘platformName‘ : ‘Android‘,‘deviceName‘ : ‘76P4C15813005463‘,‘platformVersion‘ : ‘5.1‘,#測試apk包名‘appPackage‘ : ‘com.huawei.android.launcher‘,#測試apk的launcherActivity‘appActivity‘ : ‘.Launcher‘,}#進入android系統launcherdriver = webdriver.Remote(‘http://localhost:4723/wd/hub‘,desired_caps)time.sleep(5)#name方法進入相機應用time.sleep(2)driver.find_element_by_name("相機").click()time.sleep(5)driver.quit()

 4. find_element_by_class_name

find_element_by_class_name(self, name):

Finds element within this element‘s children by class name(通過元素class name屬性定位元素 )

:Args: - name - class name to search for.

用法 driver. find_element_by_class_name(“android.widget.LinearLayout”)

find_element_by_class_name方法其實很不實用,一般控制項的class基本相同,如上面的應用控制項class都是android.widget.TextView,所以不好區分元素。

 5. find_element_by_link_text

find_element_by_link_text(self, link_text):

Finds element within this element‘s children by visible link text.通過元素可見連結文本定位:Args:- link_text - Link text string to search for.用法 driver.find_element_by_link_text(“text”)  

 

 6. find_elements_by_link_text

find_element_by_link_text(self, link_text):

Finds a list of elements within this element‘s children by visible link text通過元素可見連結文本定位,含有該屬性的所有元素:Args:- link_text - Link text string to search for.用法 driver.find_elements_by_link_text(“text”)

 7. find_element_by_partial_link_text

find_element_by_partial_link_text(self, link_text): 

 

 8. find_element_by_tag_name

find_element_by_tag_name(self, name):

Finds element within this element‘s children by tag name.通過尋找html的標籤名稱定位元素:Args:- name - name of html tag (eg: h1, a, span)用法 driver.find_element_by_tag_name(“name”) 

9. find_element_by_css_selector

find_element_by_css_selector(self, css_selector):

‘Finds element within this element‘s children by CSS selector.通過CSS選取器定位元素:Args:- css_selector - CSS selctor string, ex: ‘a.nav#home‘  

10. find_element_by_ios_uiautomation

find_element_by_ios_uiautomation(self, uia_string): 

Finds an element by uiautomation in iOS.通過iOS uiautomation尋找元素:Args:- uia_string - The element name in the iOS UIAutomation library:Usage:driver.find_element_by_ios_uiautomation(‘.elements()[1].cells()[2]‘)用法dr. find_element_by_ios_uiautomation(‘elements’)  

 11. find_element_by_accessibility_id

find_element_by_accessibility_id(self, id):

Finds an element by accessibility id.通過accessibility id尋找元素:Args:- id - a string corresponding to a recursive element search using theId/Name that the native Accessibility options utilize:Usage:driver.find_element_by_accessibility_id()用法driver.find_element_by_accessibility_id(‘id’)

 

 

學習地址:

http://blog.csdn.net/bear_w/article/details/50330565

http://blog.csdn.net/bear_w/article/details/50330565 


 

APPIUM API整理(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.