为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Selenium 获取元素的部分文本

如何使用 Selenium 获取元素的部分文本

互换的青春 2022-07-20 19:28:18
我有这个 HTML:<div id="msg">  <b>text1</b>  <br>  text2 <b>text3</b> text4  <ul class="list">    <li>...</li>    <li>...</li>    <li>...</li>  </ul>  text5</div>我想从div[@id = 'msg']之前的文本中提取ul,使用 xpath。喜欢driver.findElement(By.xpath("xpath")).getText()->text1 text2 text3 text4有可能还是我应该使用另一个逻辑?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

根据本次讨论中的@kjhughes ,XPath 用于选择,而不是用于操作。您可以选择 XML 文档中存在的节点,但不能转换这些节点。


在您的情况下,如果您的 XML 文档包含此节点:


<div id="msg">

  <b>text1</b>

  <br>

  text2 <b>text3</b> text4

  <ul class="list">

    <li>...</li>

    <li>...</li>

    <li>...</li>

  </ul>

  text5

</div>

您可以<div通过 选择 > 节点//div[@id='msg'],但所选节点将按照其在源 XML 中的显示方式显示,即,具有类的子节点list位于<ul>节点内。


如果要操作或转换通过 XPath 选择的节点(以排除其子元素),则必须使用宿主语言(XSLT、JavaScript、Python、Java、C# 等)来操作选择。


解决方案

要单独提取文本,您可以使用以下解决方案:


WebElement myElement = driver.findElement(By.xpath("//div[@id='msg']"));

String text1 = myElement.findElement(By.xpath("./b")).getAttribute("innerHTML");

String text2 = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[3].textContent;', myElement).toString();

String text3 = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[4].textContent;', myElement).toString();

String text4 = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[5].textContent;', myElement).toString();

String text5 = ((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString();



查看完整回答
反对 回复 2022-07-20
?
慕森卡

TA贡献1806条经验 获得超8个赞

只是想分享另一个想法。

您可以获取 OuterHTML,然后将其剥离到“ul”标签,然后从输出中删除 html 标签。现在您可以根据需要更改字符串。

我几乎可以使用 javascript 获取您要查找的文本。将其粘贴在下面供您参考,您可以在 Java 中执行相同操作。

oHTML = document.querySelector("div#msg").outerHTMLoHTML.substring(0,
oHTML.search('<ul')).replace(/<.*>/,'').replace(/<\/?[^>]+(>|$)/g, "").replace(/\n/g, " ").trim()

您可以在浏览器控制台中运行它以查看输出。下面是javascript输出。

text1      text2 text3 text4


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 292 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信