微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium-使用xpath获取文本节点,并将其用作Java中的字符串

这个问题已经在这里有了答案:            >            Getting text from a node                                    3个
我有一段这样的代码

<div id='wrapper'>
  <span>*</span>    
  Question 1
</div>

我想将问题1作为字符串存储在Java中,因此当我使用xpath // div / text()来获取文本“问题1”时.但是,当我尝试打印该值时,出现错误Invalid Selector Exception Xpath // div / text()是:[对象文本].它应该是一个元素.

String text = driver.findElement(By.xpath("//div")).getText();

//返回*问题1

String text = driver.findElement(By.xpath("//div/text()")).getText();

//返回错误

我应该如何只存储问题1.我可以使用上面的第一种方法替换*,但是我不想这样做.

解决方法:

我不确定我知道最好的方法,但这是一种方法.问题是您正在寻找包装DIV的子元素的一组元素中的特定文本.在您提供的示例中,我唯一能看到的是您想要的文本在包含标签之外.我们可以利用这个优势.基本上,方法是在包装器中获取整个文本,然后循环遍历包装器的所有子元素,从原始字符串中删除每个包含在其中的文本.那应该留下您想要的文本.我已使用您提供的示例测试了以下代码.

String wrapperText = driver.findElement(By.id("wrapper")).getText().trim(); // get all the text under wrapper
List<WebElement> children = driver.findElements(By.cssSelector("#wrapper > *")); // get all the child elements of wrapper
for (WebElement child : children)
{
    String subText = child.getText(); // get the text from the child element
    wrapperText = wrapperText.replace(subText, "").trim(); // remove the child text from the wrapper text
}
System.out.println(wrapperText);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐