我下面有HTML代码。我需要控制台日志或仅打印desc
类文本-“打印此内容”,而不打印spell
量角器或selenium中的类文本。
<span class="desc">
Print this
<a class="new-link" href="#">
<span class="spell">And not this</span>
</a>
</span>
我试图这样做,getText()
但是它使用以下代码打印了完整的语句-
打印此而不是此
在使用Java的量角器中:
element(by.css('.desc')).getText().then(function(text){
console.log(text);
});
在使用Java的Selenium中:
System.out.println(driver.findElement(by.xpath('//*[@class=".desc"]')).getText());
如何仅打印文本的第一部分(即“打印此”)?
任何建议或帮助将不胜感激?谢谢。
ElementFinder.getText()
调用innerHTML
元素并删除前导和尾随空格,但innerHTML
还包括任何嵌套级别的所有子元素。DOM中没有特殊属性只能获取第一级文本,但是可以自己实现。DOM中的文本也是一个节点,并且以与任何标记元素相同的方式存储在DOM树中,只是具有不同的类型和属性集。我们可以使用属性获得所有类型元素的一级子级Element.childNodes
,然后对其进行迭代并仅保留文本节点,然后连接其内容并返回结果。
在Protractor中,我决定向的原型中添加自定义方法,ElementFinder
以使其易于使用,因此任何Protractor元素都可以使用它。由您决定放置此扩展代码的位置,但是我建议您在测试之前将其包括在
protractor.conf.js中 。
protractor.ElementFinder.prototype.getTextContent = function () {
// inject script on the page
return this.ptor_.executeScript(function () {
// note: this is not a Protractor scope
// current element
var el = arguments[0];
var text = '';
for (var i = 0, l = el.childNodes.length; i < l; i++) {
// get text only from text nodes
if (el.childNodes[i].nodeType === Node.TEXT_NODE) {
text += el.childNodes[i].nodeValue;
}
}
// if you want to exclude leading and trailing whitespace
text = text.trim();
return text; // the final result, Promise resolves with this value
}, this.getWebElement()); // pass current element to script
};
此方法将返回Promise,并使用text
变量value进行解析。如何使用它:
var el = $('.desc');
expect(el.getTextContent()).toContain('Print this');
// or
el.getTextContent().then(function (textContent) {
console.log(textContent); // 'Print this'
});
问题内容: 我正在查看的页面包含: 我想获取div中的所有文本,除了中的文本。(我想获得“文本1”,“文本3”和“文本4”)。可能有几个元素,或者根本没有。而且可能有一些元素,甚至一个元素都在另一个元素之中,或者根本没有。 我想通过获取div的所有html源并使用正则表达式删除元素来做到这一点。但是selenium.get_text不会返回html,而只是返回文本(全部!)。 我知道我可以使用正则
问题内容: 我正在使用Java Selenium项目进行网页自动化。该网页包含许多我无法使用selenium 方法进行交互的多层影子根DOM元素。 我尝试了以下解决方案: Deep CSS(不适用于最新的Chrome浏览器) JS执行器。(这确实很繁琐,并且维护起来很复杂) 注意: 如果您知道我可以在Selenium Java框架中实现的除以上所列之外的任何其他解决方案,请传递该解决方案。提前致谢
我在Java中使用selenium。我无法从组合框的html元素中获取文本。每次我在combobox中得到所选值的空白文本时。 下面是我的combobox的html结构。 我在元素中使用了以下xpath 请帮忙。 蒂亚。
问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它
我试图从模态弹出窗口的标题获取文本。在页面上有许多这样的窗口——每个窗口都有uniqe id。在每个这样的模态窗口中,所有元素都有相同的类名,所以首先我需要指向正确的窗口,然后寻找特定的元素。所以我用这个代码来做: 但它没有向我展示任何东西。我发现,当我以前打印这个标题文本时,这个函数工作正常。在从函数返回值之前,我添加了以下内容: 在返回文本之前,我尝试了初始化变量,但没有成功。我可以继续我的解
我正在使用下面的一段代码来获取某个特定定位器的文本。 这将返回字符串值,但只有在IE浏览器中,它才在其他浏览器(即Firefox和chrome)中失败并工作。 我面临这个问题: 组织。openqa。硒。WebDriverException:无法获取元素文本(警告:服务器未提供任何堆栈跟踪信息) 请帮我解决这个问题,IE浏览器中的这个异常也非常不一致,有时它通过了,有时失败了相同的代码。