参考学习视频链接:Baby!还有定位不到的元素吗?无处安放的 Xpath(下集)_哔哩哔哩_bilibili

1、通常定位元素有比较固定的八种定位方式,如下图;

2、平时可以通过浏览器右键进行获取定位方式,但是通常获取的元素无法准确定位或者太长这时就需要自己通过XPath语法来进行定位;目前我这边记录常用的自定义手写的xpath定位方式,第一种通过获取文本进行定位如下图所示:

代码为driver.findElement(by.xpath(".//*[text()='我的主页']"));

3、也可以通过属性值来进行定位,如下图,

代码为driver.findElement(by.xpath(".//*[@href='http://i.baidu.com']"));

4、如果通过两个上面两种办法获取到的元素为多个时则可以通过用:(语法)[第几个]的方式来定位,如下图

代码为driver.findElement(by.xpath("(.//*[text()='我的主页'])[2]"));

5、也可以通过 // 先定位到父级或以上节点进行定位,如图所示

6、有时在通过//*[@text()='文本值'] 方式来定位元素时,文字值中有空格或者特殊符号时则可以通过模糊查询来进行定位。contains模糊查询:contains(@属性/text(),值);

文本值:text()具体语法如图所示:

属性值语法如下图:

7、 有时在通过id进行定位时会发现id是动态的 这时则可以通过

starts-with():方法来定位;通常id是以XXX开始后面随机变化:支持属性,文本值;

属性值语法如下图所示:

文本值如下图所示:

8、当某个元素不稳定时可以通过元素来定位父级、子级、或者兄弟级;则通过/.. 定位到其父级,通过/来定位子级;具体语法如图所示:

(//*[@type='password'])[2]/../../../../../../div[1]

9、通过多条件查询,通过and 将多个表达式链接

//*[@type='password' and starts-with(@id,'auto-id')]

10、有时候会遇到svg元素,无法通过常用的方式进行定位;需要通过name属性来定位

如下图所示

//*[name()='svg']

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐