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、根据元素的属性 textresource-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

 

 

 

posted @   mik99  阅读(433)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示