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

时间:2015-09-09 12:20:26

标签: javascript java selenium dom protractor

我有以下HTML代码。我需要控制日志或仅打印desc类文本 - "打印此文件"而不是量角器或硒中的spell类文本。

<span class="desc">
Print this
    <a class="new-link" href="#">
        <span class="spell">And not this</span>
    </a>
</span>

我尝试getText(),但它打印完整的语句,代码如下 -

  

打印此而不是

在使用Javascript的Protractor中:

element(by.css('.desc')).getText().then(function(text){
    console.log(text);
});

在Selenium中使用Java:

System.out.println(driver.findElement(by.xpath('//*[@class=".desc"]')).getText());

如何仅打印文本的第一部分(例如,&#34;打印此文件&#34;)?

任何建议或帮助将不胜感激?感谢。

1 个答案:

答案 0 :(得分:1)

我使用Michael的解决方案并嵌入到我的测试规范中而不调用该函数。如果需要重复使用它作为单独的功能仍然会更好。但是,如果您需要内联解决方案,请按以下步骤操作 -

it("Get First part of text", function(){
    browser.executeScript(function () {
        var el = arguments[0], text = '';
        for (var i = 0, l = el.childNodes.length; i < l; i++)
            if (el.childNodes[i].nodeType === Element.TEXT_NODE)
                text += el.childNodes[i].nodeValue;
        return text.trim();
    },$('.desc').getWebElement()).then(function(text){
        //use expect statements with "text" here as needed
    });
});

希望它有所帮助。