自动化html嵌套处理,如何使用Selenium或Protractor获取HTML中嵌套元素的文本以实现自动化?...

小编典典

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'

});

2020-06-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值