app xpath定位详解
基本控件#
- TextView: 文本
- Button: 按钮
- EditText: 输入框
- ImageView: 图片
- 其他: Alert(警告框)/Toast(提示消息)/SeekBar(滑块)/Webview(嵌入网页)
控件常见属性#
-
index: 索引, 用于排序
-
text: 控件名称(显示文本)
-
resource-id: 资源id
-
class: 控件类型(文本/按钮/输入框等)
-
content-desc: 控件描述
-
package: 所属包(一个包就是一个apk)
-
enabled: 是否可用
-
clickable: 是否可点击
-
focused: 是否聚焦状态
-
bounds: 坐标
1、根据元素的属性 text、resource-id 、class、 content-desc属性定位
# text定位 1.可以通过text文本定位到 # driver.find_element_by_xpath("//*[@text='天猫国际']") # resource-id定位 2.如果元素id是唯一的,xpath也可以定位id属性 # 扫一扫 driver.find_element_by_xpath("//*[@resource-id='com.taobao.taobao:id/bar_search']") time.sleep(4) driver.back() # class定位 3.class属性唯一的话,可以通过class属性定位到,定位class属性有两种方法 driver.find_element_by_xpath("//android.widget.EditText").click() time.sleep(4) driver.back() driver.find_element_by_xpath("//*[@class='android.widget.EditText']").click() # text定位 time.sleep(5) driver.back() driver.find_element_by_xpath("//*[@text='注册/登录']").click() time.sleep(5) # content-desc 4.定位content-des属性 driver.find_element_by_xpath("//*[@content-desc='帮助']").click()
2.contains模糊定位
.contains是模糊匹配的定位方法,对于一个元素的id或者text不是固定的,但有一部分是固定的,这种就可以模糊匹配
contains定位在定位一组元素的时候,效率尤其突出
# 模糊匹配 driver.find_element_by_xpath("//*[contains(@resource-id, 'bar_search')]").click() time.sleep(5) driver.back() # widget.EditText 搜索 driver.find_element_by_xpath("//*[contains(@class, 'widget.TextView')]").click() time.sleep(5) driver.back() # text 的 contains driver.find_element_by_xpath("//*[contains(@text, '注册/登录')]").click() time.sleep(5) driver.find_element_by_xpath("//*[contains(@text, '帮助')]").click()
3.组合定位
如果一个元素有2个属性,通过xpath也可以同时匹配2个属性,text, resource-id,class,index,content-desc这些属性都能任意组合定位
# 通过2个属性组合定位 # id+class 淘宝搜索框 driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.taobao.taobao:id/home_searchedit']") # text+class 淘宝全部分类 driver.find_element_by_xpath("//*[@text='分类' and @class='android.widget.TextView']") # id+desc 淘宝扫一扫 driver.find_element_by_xpath("//*[@resource-id='com.taobao.taobao:id/home_searchedit' and @content-desc='扫一扫']")
6.层级定位
https://www.cnblogs.com/fanqian0330/p/10413417.html
https://blog.csdn.net/qq_35304570/article/details/80114773