XPath怎样根据一个元素定位另外一个元素?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XPath怎样根据一个元素定位另外一个元素?相关的知识,希望对你有一定的参考价值。
参考技术A1、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怎样根据一个元素定位另外一个元素?的主要内容,如果未能解决你的问题,请参考以下文章