Java 如何使用xpath确定要选择的子元素?
例如,如果我们有一个xml,如下所示:Java 如何使用xpath确定要选择的子元素?,java,xml,selenium,xpath,nodes,Java,Xml,Selenium,Xpath,Nodes,例如,如果我们有一个xml,如下所示: <tr> <th>LION</th> <th>TIGER</th> <th>CHEETAH</th> <th>GIRAFFE</th> <th>BEAR</th> </tr> 狮子 老虎 猎豹 长颈鹿 熊 我想为GIRAFFE选择xpath元素。。。如何(使用xpath)判断GIRAFFE元素下的哪
<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来确定它是下的第四个元素???不完全确定您在问什么,但是这些xpath中的一个可能会有帮助
这个XPath表达式
count(/tr/th[.="GIRAFFE"]/preceding-sibling::th)+1
将评估为
4
表示长颈鹿th
元素是第四个th
兄弟元素
这个XPath
/tr/th[.="GIRAFFE"]
/tr/th[.="CHEETAH"]/following-sibling::th[1]
将根据内容选择长颈鹿th
这个XPath
/tr/th[.="GIRAFFE"]
/tr/th[.="CHEETAH"]/following-sibling::th[1]
将根据长颈鹿在猎豹之后的位置来选择长颈鹿,但不完全确定你在问什么,但这些XPath中的一个可能会有帮助
这个XPath表达式
count(/tr/th[.="GIRAFFE"]/preceding-sibling::th)+1
将评估为
4
表示长颈鹿th
元素是第四个th
兄弟元素
这个XPath
/tr/th[.="GIRAFFE"]
/tr/th[.="CHEETAH"]/following-sibling::th[1]
将根据内容选择长颈鹿th
这个XPath
/tr/th[.="GIRAFFE"]
/tr/th[.="CHEETAH"]/following-sibling::th[1]
将根据长颈鹿在猎豹之后的位置选择长颈鹿
th
,如果要按行中的标题文本选择列元素,并在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>
//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]
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]"));
Selenium Java使用示例:
<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>
//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]
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]"));
如果要按行中的标题文本选择列元素并在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>
//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]
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]"));
Selenium Java使用示例:
<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>
//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]
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]"));
有什么原因不能用
//th[.='GIRAFFE']
来选择元素吗?有什么原因不能用//th[.='GIRAFFE']
来选择元素吗?