一尘不染

在selenium中查找WebElement的子节点

selenium

我正在使用selenium测试我的Web应用程序,并且可以使用成功找到标签By.xpath。但是,我时不时需要在该节点中找到子节点。

例:

<div id="a">
    <div>
        <span />
        <input />
    </div>
</div>

我可以:

WebElement divA = driver.findElement( By.xpath( "//div[@id='a']" ) )

但是现在我需要找到输入,所以我可以这样做:

driver.findElement( By.xpath( "//div[@id='a']//input" ) )

但是,到那时,我只拥有了代码divA,而不再具有xpath了……我想做这样的事情:

WebElement input = driver.findElement( divA, By.xpath( "//input" ) );

但是这种功能不存在。我可以这样做吗?

顺便说一句:有时我需要找到一个<div>具有一定下降节点的。如何在xpath中询问“ <div>包含<span>带有文本的'hello world'”?


阅读 281

收藏
2020-06-26

共1个答案

一尘不染

根据JavaDocs,您可以执行以下操作:

WebElement input = divA.findElement(By.xpath(".//input"));

如何在xpath中询问“包含带有文本’hello world’的跨度的div标签”?

WebElement elem = driver.findElement(By.xpath("//div[span[text()='hello world']]"));

XPath规范对此是一个令人惊讶的好阅读。

2020-06-26