例如,如果我们有一个如下所示的xml:
<tr>
<th>LION</th>
<th>TIGER</th>
<th>CHEETAH</th>
<th>GIRAFFE</th>
<th>BEAR</th>
</tr>
,并且我想为GIRAFFE选择xpath元素...(使用xpath)我如何分辨GIRAFFE元素下的哪个元素?显然,通过查看xml,它是// tr / th [4] ....,但是有一种方法可以使用xpath来确定它是??下的第4个元素。
答案 0 :(得分:2)
不确定您要问的是什么,但是也许其中一个XPath会有所帮助...
此XPath表达式,
docker pull tensorflow/tensorflow
将计算为
count(/tr/th[.="GIRAFFE"]/preceding-sibling::th)+1
指示GIRAFFE 4
元素是第四个th
兄弟元素。
此XPath,
th
将根据其内容选择GIRAFFE /tr/th[.="GIRAFFE"]
。
此XPath,
th
将根据其在CHEETAH /tr/th[.="CHEETAH"]/following-sibling::th[1]
之后的位置来选择GIRAFFE th
。
答案 1 :(得分:0)
如果要按行中的标题文本选择列元素并在Selenium中使用,请参见以下示例:
HTML示例:
<table>
<thead>
<tr>
<th>LION</th>
<th>TIGER</th>
<th>CHEETAH</th>
<th>GIRAFFE</th>
<th>BEAR</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</tbody>
</table>
用于硒的XPATH:
//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]
硒Java用法示例:
String animalName = "GIRAFFE";
WebElement element = driver.findElement(By.xpath("//table/tbody/tr/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));
WebElement animalElementFromRow1 = driver.findElement(By.xpath("//table/tbody/tr[1]/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));
WebElement animalElementFromRow2 = driver.findElement(By.xpath("//table/tbody/tr[2]/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));