为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 xpath 来确定我们选择的是哪个子元素?

如何使用 xpath 来确定我们选择的是哪个子元素?

潇湘沐 2022-07-14 10:15:50
例如,如果我们有一个如下的 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 来确定它是 4th 下的元素?
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

不完全确定您在问什么,但也许这些 XPath 之一会有所帮助......


这个 XPath 表达式,

count(/tr/th[.="GIRAFFE"]/preceding-sibling::th)+1

将评估为

4

表示 GIRAFFEth元素是第 4 个th兄弟元素。


这个 XPath,

/tr/th[.="GIRAFFE"]

将根据其内容选择 GIRAFFE th


这个 XPath,

/tr/th[.="CHEETAH"]/following-sibling::th[1]

th凭借其在猎豹之后的地位选择长颈鹿th


查看完整回答
反对 回复 2022-07-14
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如果您想通过行中的标题文本选择列元素并在 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>

用于 Selenium 的 XPATH:


//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]

Selenium 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]"));



查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信