栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用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');// orel.getTextContent().then(function (textContent) {    console.log(textContent); // 'Print this'});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号