Har*_*ddy 7 selenium xpath webdriver
我正在使用selenium使用xpath在我的网页上获取一些文本.
页面标签结构如下 -
<span id="data" class="firefinder-match">
Seat Height, Laden
<sup>
<a class="speckeyfootnote" rel="p7" href="#">7</a>
</sup>
</span>
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码 -
driver.findElement(By.xpath("//span[@id='data']")).getText();
Run Code Online (Sandbox Code Playgroud)
我得到了结果= Seat Height, Laden 7
但我想避免阅读<sup>标签中的文本并获得结果Seat Height, Laden
请让我知道我可以使用哪个xpath表达式来获得我想要的结果.
我不知道在Selenium中有什么方法可以做到这一点,所以我的JS解决方案.想法是获取元素的所有子元素(包括文本节点),然后仅选择文本节点.您可能需要添加一些.trim()(或JS等效的)调用来消除不需要的空格.
整个代码:
WebElement elem = driver.findElement(By.id("data"));
String text;
if (driver instanceof JavascriptExecutor) {
text = ((JavascriptExecutor)driver).executeScript(
"var nodes = arguments[0].childNodes;" +
"var text = '';" +
"for (var i = 0; i < nodes.length; i++) {" +
" if (nodes[i].nodeType == Node.TEXT_NODE) {" +
" text += nodes[i].textContent;" +
" }" +
"}" +
"return text;"
, elem);
}
Run Code Online (Sandbox Code Playgroud)
而JS只是为了更好的可读性.
var nodes = arguments[0].childNodes;
var text = '';
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == Node.TEXT_NODE) {
text += nodes[i].textContent;
}
}
return text;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13771 次 |
| 最近记录: |