如何使用Selenium中的以下子元素检索不带标签的元素的文本

时间:2019-11-18 13:01:55

标签: java selenium selenium-webdriver xpath

我有一个元素与另一个没有封闭标签的元素同级。我正在尝试定位第二个元素,因此可以检索其文本。我可以使用parent/sibling/following-sibling::text()[1]从控制台执行此操作,因此格式为String dateString = driver.findElement(By.xpath("//mat-dialog-container/ims-presenting-complaint-create/ims-presenting-complaint-details/div/div[3]/div[4]")).getText().split("\\n")[1]; 。但是,尽管在检查器工具上运行良好,但text()部分还是破坏了Selenium。除了获取整个父div并破坏其String文本(例如

)外,不确定如何继续
{{1}}

但是感觉有没有一种更好的方法来获取同级元素呢?

enter image description here

非常感谢。

1 个答案:

答案 0 :(得分:1)

text()返回TextNode,Selenium不支持它。它在devtools中工作,因为它执行JQuery。您提到的解决方法是解决方法,或者您可以找到div和<h5>并从全文中删除子文本

WebElement parentElement = driver.findElement(By.xpath("//mat-dialog-container/ims-presenting-complaint-create/ims-presenting-complaint-details/div/div[3]/div[4]"));
String allText = parentElement.getText();
String childText = parentElement.findElement(By.xpath("./h5"));
String dateString = allText.replace(childText, "");

或者您可以使用JS

String dateString = driver.executeScript("return document.evaluate('div[4]/h5/following-sibling::text()[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;");