Appium+python定位方式


介紹appium 幾種簡單的定位方式

1、id定位
格式:driver.find_element_by_id("這里是resource-id")
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit")
2、name定位
如上圖的定位,就可以通過name來定位
格式:driver.find_element_by_name("這里是text")
driver.find_element_by_name("搭配新寵不能缺")
注:appium1.5以下老的版本是可以通過name定位的,新版本從1.5以后都不支持name定位了**
(如果text屬性為空,那就不能通過name屬性定位了)
3、class定位
格式:driver.find_element_by_class_name("class屬性")
driver.find_element_by_class_name("android.widget.EditText")
(注:一般一個頁面上的class屬性不唯一,元素不唯一的話定位會報錯了)
4、accessibility_id定位就是通過UI Automator工具查看的content-desc屬性
(當然content-desc屬性為空,就不能通過這個屬性定位了,這里只是舉個例子)
看到content-desc屬性有值,就可以通過accessibility_id來定位了

格式:driver.find_element_by_accessibility_id(“content-desc的值”)

driver.find_element_by_accessibility_id(“xxx”)

(注:一般一個頁面上的class屬性不唯一,元素不唯一的話定位會報錯了)
除了上面的這幾個通過屬性定位的,復雜一點的還可以通過xpath和AndroidUiAutomator來定位

5、list定位,即列表定位。driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()。
說明:有些列表頁面頁面沒有id屬性,有class屬性,但class屬性不唯一。或者有id屬性,但是列表的id屬性都一樣。這個時候可以采用list定位,取id相同或class相同的,定位一組元素,再通過下標取出元素,便可定位到想取出的元素。
單數定位:find_element 為定位單數
復數定位:find_elements 為定位復數
例子:
searchs = driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")
print(searchs) # 打印list
print(type(searchs))
該定位到為list類型
定位一組之后,如果要點擊該元素,那就先從list里面通過下標索引取出元素對象,再click就可以了。下標索引是從0開始。
# list定位
driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()

6、xpath定位
appium 1.5版本后name定位方式無法使用,可使用xpath代替
appium中xpath語法://*[@text='頁面text文本']
例子:
driver.find_element_by_xpath("//*[@text='小說']").click()
若一個界面的text值不唯一呢?
xpath語法里面*是代表匹配任意的值,在selenium里面*是匹配任意標簽,appium里的*是匹配任意class名稱,如果幾個文本的class屬性不一樣,就可以通過以下組合:

//android.widget.TextView[@text='小說']

7、模擬手勢點擊坐標

原因:定位元素確實無法定位到。可使用坐標定位,
tap為模擬手指點擊坐標
driver.tap([(374, 831), (654, 906)], 500)


免責聲明!

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



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