XPath怎样根据一个元素定位另外一个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XPath怎样根据一个元素定位另外一个元素?相关的知识,希望对你有一定的参考价值。

参考技术A

1、Xpath也可以使用元素的属性值来定位,以百度输入框和搜索按钮为例

2、通过id属性值来定位:注释://表示在当前页面的某个目录下,input表示定位元素的标签名,[@id='kw'],表示这个元素的id属性值等于kw

3、通过name和class属性值来定位:如果不想指定标签名,则也可以用*代替,当然,使用Xpath不局限于id,name和class这三个属性值,元素的任意属性值都可以使用,只要它是唯一的标识元素

4、层级与属性结合。如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找到其上一级元素,如果它的上一级有唯一可以标识属性的值,也可以拿来使用

5、使用逻辑运算符。如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。例如,假如要查找第一行元素,则:

一个关于Selenium元素定位多个元素的问题

在定位一个明细表(由很多tr td 元素组成)的时候,由于需要定位所有的行中某一个td,这个td都有共同元素和相同的值。

通过xpath直接定位"//tr/td[@title=‘xxxx‘]"时候,不能查找到元素。

查找原因,尝试了几个小时,不得其果。

最后在前面添加一行通过xpath直接定位"//tr/td[@title=‘xxxx‘]"的单行元素的获取元素(打印出来是第一行的元素)后,下面

通过xpath直接定位"//tr/td[@title=‘xxxx‘]"时候,获取多行元素成功。

暂时不知道其原因。故记录一下,以便以后分析使用。

 

如下代码,注意获取元素为调方法

WebElement e = getElement(driver, "xpath", "//tr/td[@title=‘xxxx‘]");// 这句必须要,没有这句下面for中获取不到元素
System.out.println(e.getAttribute("id"));

for (WebElement ele : getElements(driver, "xpath", "//tr/td[@title=‘xxxx‘]")) {
System.out.println(ele.getAttribute("id"))

if (ele.getAttribute("id").contains("xxxx")) {

getElement(driver, "id", ele.getAttribute("id")).click();
break;
}
}

以上是关于XPath怎样根据一个元素定位另外一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

Web元素定位方法_8大元素+xpath定位

10 xpath定位元素

学习 APPIUM 元素定位 (JAVA)-xpath

selenium+xpath 文本信息定位

selenium 获取元素方法-注解

元素定位XPath 简单操作分享