Java 如何使用Selenium获取元素的部分文本
我有这个HTML:Java 如何使用Selenium获取元素的部分文本,java,selenium,selenium-webdriver,xpath,xpath-1.0,Java,Selenium,Selenium Webdriver,Xpath,Xpath 1.0,我有这个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 id="msg">
<b>text1</b>
<br>
text2 <b>text3</b> text4
<ul class="list">
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
text5
</div>
我想使用xpath从div[@id='msg']中提取ul前面的文本
类似于driver.findElementBy.xpathxpath.getText->text1 text2text3 text4
这是可能的,或者我应该使用另一个逻辑?根据中的@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>
我只是想分享另一个想法 您可以获取OuterHTML,然后将其剥离到ul标记,然后从输出中删除html标记。现在,您可以根据需要更改字符串 我几乎可以使用javascript获得您要查找的文本。将其粘贴到下面以供参考,您可以在Java中执行相同的操作
oHTML = document.querySelector("div#msg").outerHTML
oHTML.substring(0,oHTML.search('<ul')).replace(/<.*>/,'').replace(/<\/?[^>]+(>|$)/g, "").replace(/\n/g, " ").trim()
我想使用xpath。您建议获取整个div,因为@ul mean属性ul的div.Same。您的xpath现在正在寻找div没有class='list':Waqar Nadir的答案是最近的,但仍然不是我想要的结果。这不起作用。这将获取id为msg但没有类“list”的DIV。。。那是。。。它获取标记中的全部文本,即所有内容。我使用xpath获取所有div:text1 text2text3text4。。。text5和如果您试图从逻辑上理解//div[@id='msg'和not@class='list']->get div,id=msg,class!=list@KunLun签出我的更新答案并让我知道状态。最好的办法是从msg中获取.innerHTML,按UL标记拆分,然后去掉HTML标记。@JeffC我如何使用.innerHTML?你能给我举个简单的例子吗?driver.findElementBy.idmsg.getAttributeinnerHTML;
oHTML = document.querySelector("div#msg").outerHTML
oHTML.substring(0,oHTML.search('<ul')).replace(/<.*>/,'').replace(/<\/?[^>]+(>|$)/g, "").replace(/\n/g, " ").trim()
text1 text2 text3 text4