java - 如何使用 Selenium 中的以下子项检索没有标签的元素的文本
问题描述
我有一个元素与另一个没有封闭标签的元素是同级的。我正在尝试定位第二个元素,以便检索它的文本。我可以使用div[4]/h5/following-sibling::text()[1]
格式从控制台执行此操作parent/sibling/following-sibling::text()[1]
。但是 text() 部分破坏了 Selenium,尽管在检查器工具上运行良好。除了获取整个父 div 并破坏其字符串文本之外,不确定如何继续,例如
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()
返回 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;");
推荐阅读
- ruby-on-rails - form_tag 在提交时不会产生 stripeToken
- microsoft-translator - 如何知道文档翻译器使用 API v2 还是 v3?
- android - Firebase 安卓用户认证
- java - 寻找旅程的起点城市
- regex - 如果匹配发生在前 N 个字符内,则提取正则表达式
- python-3.x - 使用 SALib 在 Python 中的敏感性分析错误
- python-3.x - 不一致的 python import_module 行为
- javascript - Moment.js 处理德语 Dezember 和 Januar 不同
- sitefinity - Sitefinity 将 HTML 注入头部
- python - 在 Keras 中设计一个自定义损失函数(关于 Keras 张量中的元素索引)