gpt4 book ai didi

xpath - 使用 selenium webdriver(xpath) 读取文本

转载 作者:行者123 更新时间:2023-12-03 15:26:15 26 4
gpt4 key购买 nike

我正在使用 selenium 使用 xpath 在我的网页上获取一些文本。

页面标签结构如下——

<span id="data" class="firefinder-match">
Seat Height, Laden
<sup>
<a class="speckeyfootnote" rel="p7" href="#">7</a>
</sup>
</span>

如果我使用以下代码 -
driver.findElement(By.xpath("//span[@id='data']")).getText();

我得到结果 = 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);
}

并且只是为了更好的可读性而使用 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;

关于xpath - 使用 selenium webdriver(xpath) 读取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com