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

我有一段这样的代码:

* Question 1

我想将问题1存储为Java中的字符串,因此当我使用xpath //div/text()来获取文本“问题1”时。 但是,当我尝试打印该值时,我收到错误无效选择器exceptionXpath // div / text()是:[object 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 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);