首页 > 其他分享 >Xpath定位-高级定位

Xpath定位-高级定位

时间:2023-04-09 16:45:22浏览次数:43  
标签:Xpath 定位 resource text 高级 节点 new id

Xpath语法:https://www.w3school.com.cn/xpath/xpath_syntax.asp

包含-contains()

  • Xpath 表达式中的一个函数
  • contains()函数匹配==属性值==中包含的==字符串== //*[contains(@属性,"属性值")]
  • contains() 函数定位的元素很容易为 list
  • contains() 函数内的属性名需要用 @开始

Xpath轴

1、父子

当前节点的父节点

//*[@text="HK"]/..

//*[@text="HK"]/parent::*

当前节点的子节点

//*[@resource-id="resource-id"]/child::*

2、爷孙

当前节点的爷爷

//*[@text="HK"]/../..

//[@text="HK"]/parent::/parent::*

当前节点的孙子

//*[@resource-id="resource-id"]/child::*/child::*

3、祖先

返回当前节点的所有祖先

//*[@text="HK"]/ancestor::android.widget.RelativeLayout

显式指定要返回的祖先

//*[@text="HK"]/ancestor::android.widget.RelativeLayout[1]

4、兄弟姐妹

1)节点后的兄弟姐妹节点:following-sibling

选择当前节点之后的所有兄弟节点

  • 节点后有一个兄弟节点 

//*[@text="HK"]/following-sibling::*

  • 节点后有多个兄弟节点 

//*[@resource-id="resource-id"]/following-sibling::*[@resource-id="resource-id"]

2)节点前的兄弟姐妹节点:preceding-sibling

选择当前节点之前的所有兄弟节点

  • 节点前有一个兄弟节点 

//*[@text="09988"]/preceding-sibling::*

  • 节点前有多个兄弟节点

//*[@resource-id="resource-id"]/preceding-sibling::*[@resource-id="resource-id"]

Xpath 运算符

1、AND

  • 可以在 XPath 表达式中放置 2 个条件
  • 在 AND 两个条件都应该为真的情况下,才能找到元素 
  • //*[@resource-id="resource-id" and @text="107.8"]

2、OR

  • 可以在 XPath 表达式中放置 2 个条件

  • 在 OR 的情况下,两个条件中的任何一个为真,就可找到元素。

  • OR 定位获取的是并集

  • //*[@resource-id="resource-id" or @text="加自选"]

uiautomator定位

  Android独有的定位方式,一般不使用 uiautomator 定位,在要求定位速度的时候使用。

优点:

  • xpath定位速度慢
  • uiautomator是android的工作引擎,速度快

缺点:

  • 表达式书写复杂,容易写错IDE没有提示

1、定位方式

  • 通过resourceid定位:new UiSelector.resourceId("Id")
  • 通过classname定位:new UiSelector.className("className")
  • 通过content-desc定位:new UiSelector.description("content-desc属性")
  • 通过文本定位:

    用法:driver.find_element_by_android_uiautomator(表达式).click()

    通过text文本定位语法:new UiSelector.text("text文本")

    如果文本比较长,可以使用 textContains 模糊匹:new UiSelector.textContains("包含text文本")

    同样可以用 textStartsWith 是以某个文本开头来匹配:new UiSelector.textStartsWith("以text文本开头")

    也可以用正则表达式 textMatches 匹配:new UiSelector.textMatches("正则表达式")

2、uiautomator 组合定位

  • id 与 text 属性组合

id_text = 'resourceId("resourceId").text("text")'

driver.find_element_by_android_uiautomator(id_text).click()

  • class 与 text 属性组合

class_text = 'className("className").text("text")'

driver.find_element_by_android_uiautomator(class_text).click()

3、父子关系定位 childSelector

son = 'resourceId("resourceId").childSelector(text("text"))'

4、兄弟定位 fromParent

brther = 'resourceId("resourceId").fromParent(text("text"))'

5、实时滚动查找元素

scroll_text = 'new UiScrollable(new UiSelector().scrollable(true).instance(0))

.scrollIntoView(new UiSelector.text("text文本").instance(0));'

driver.find_element_by_android_uiautomator(scroll_text).click()

 

笔记2023-4-9

标签:Xpath,定位,resource,text,高级,节点,new,id
From: https://www.cnblogs.com/yuntimer/p/17300385.html

相关文章

  • Metasploit高级技术【第一章】
    预计更新第一章Metasploit的使用和配置1.1安装和配置Metasploit1.2Metasploit的基础命令和选项1.3高级选项和配置第二章渗透测试的漏洞利用和攻击方法1.1渗透测试中常见的漏洞类型和利用方法1.2Metasploit的漏洞利用模块和选项1.3模块编写和自定义第三章Metasploit的提权......
  • C++函数高级
    目录一.函数的默认参数1.默认参数的性质 2.函数默认参数的注意事项二.函数的占位参数三.函数的重载  1.重载的性质和条件(1)修改参数的个数(2)修改参数的类型(3)修改参数的顺序2.函数重载的注意事项 (1)当引用&作为函数参数(2)不可以用函数的默认参数作为重载条件 一.函数的默认参数1.......
  • 分享10个高级sql写法
    本文主要介绍博主在以往开发过程中,对于不同业务所对应的sql写法进行归纳总结而来。进而分享给大家。本文所讲述sql语法都是基于MySql8.0+博主github地址:http://github.com/wayn111 欢迎大家关注,点个star一、ORDERBYFIELD()自定义排序逻辑MySql中的排序ORDERBY......
  • 新概念2册L80笔记(复习比较级和最高级)
    L80TheCrystaiPalace单词理解语法理解比较级/最高级区分高下比较(Lesson8Thebestandtheworst)例句:YiistallerthanLin例句:ThisistheworsthandwritingIhaveeverseenn.+erthan.../the比较级then.+estof/in最高级,of是对象范围,in环境范围规则变化:直接+er、......
  • html页面里面的button标签使用@click属性时,无法定位到Vue的method里面
    问题解决就很离谱,都是按照网上的教程来的,一直无法定位,之后跟着加上了div标签,加上了id属性,方法还是灰白色,调用不了;后来直接将el属性名称更改掉了,没想到这样就成功识别到了,反正就是逻辑没有出问题,最后也达到期望值了。......
  • 高级硬件和 PCB 设计大师班 2022 –EsteemPCB
    高级硬件和PCB设计大师班2022–EsteemPCB高级硬件设计课程Part-1RK3399COB(LPDDR4SDRAM,WIFI/BT,EMMC,PMIC,260PinDDR4SystemonModule)课程英文名:AdvancedHardwareandPCBDesignMasterclass2022-EsteemPCB此视频教程共21.8GB,中英双语字幕,画质清晰无水印......
  • python-xpath,爬取猪八戒网(半成品)
    数据未进行清洗xpath  / 层级关系text() 拿文本//    https://blog.csdn.net/KELLENSHAW/article/details/127877476爬取https://task.zbj.com/hall/list-all-0-p1?kw=HTML先定位小盒子的div然后通过检查,xpath://*[@id="hall-list-wrap"]/div[4]/div[1]/div[1]/div[1]/d......
  • 【论文解读】不和谐区域定位
    【论文解读】不和谐区域定位一、简要介绍 不和谐区域定位的目的是在与周围背景不兼容的合成图像中定位该区域。不和谐问题主要是由于图像编辑技术产生的颜色和照明不一致。在本研究中,作者倾向于将输入的图像转换到另一个颜色空间,以放大不和谐区域与背景之间的域差异,从而使模......
  • 实战-JAVA应用程序CPU占用率飙升,定位线程的堆栈信息
    分以下几个步奏:(1)使用命令top-p<pid>,显示你的java进程的cpu情况,pid是你的java进程号,比如14203。(使用jps可以获取到java的进程id或者top直接查看)(2)按H,获取每个线程的CPU情况。(shirt+H)(3)找到内存和cpu占用最高的线程tid,比如14204。(4)转为十六进制得到377C,此为线程id的十六进......
  • 定位提示工具
     以下实例中,提示工具显示在指定元素的右侧(left:105%)。注意 top:-5px 同于定位在容器元素的中间。使用数字 5 因为提示文本的顶部和底部的内边距(padding)是5px。如果你修改padding的值,top值也要对应修改,这样才可以确保它是居中对齐的。在提示框显示在左边的情况也是......