元素中的文本与量角器匹配

时间:2016-09-04 11:50:21

标签: javascript node.js protractor

我在页面上有一个元素。可能会有不同的文字。我想尝试(代码在下面),它不打印到控制台。

this.checkStatus = function () {

    var element = $('.message')
    browser.wait(EC.visibilityOf(element), 5000).then(function () {
        browser.wait(EC.textToBePresentInElement(conStatus, 'TEXT1'), 500).then(function () {
            console.log('TEXT1');
        })
        browser.wait(EC.textToBePresentInElement(element, 'TEXT2'), 500).then(function () {
            console.log('TEXT2');
        })
        browser.wait(EC.textToBePresentInElement(element, 'TEXT3'), 500).then(function () {
            console.log('TEXT3');
        })
        browser.wait(EC.textToBePresentInElement(element, 'TEXT4'), 500).then(function () {
            console.log('TEXT4');
        })
    })
    return this;
}

感谢

2 个答案:

答案 0 :(得分:0)

我看到两个问题。首先,不确定' constatus'是什么?你需要纠正这个问题。第二,当浏览器无法找到匹配条件并且超时到期时,浏览器将抛出错误/异常,因此,如果您的第一个条件不满足,它将抛出超时异常并且永远不会转到第二个。相反,尝试下面的内容

var section = "";
this.checkStatus = function () {

    var element = $('.message')
    browser.wait(EC.visibilityOf(element), 5000).then(function () {
        browser.wait(()=>{

        if(EC.textToBePresentInElement(element, 'TEXT1')){
                    section = "Text1";
        }
            else if(EC.textToBePresentInElement(element, 'TEXT2')) {
                    section = "Text2";
            }
        else if(EC.textToBePresentInElement(element, 'TEXT3')) {
                    section = "Text3";
        }
            else if(EC.textToBePresentInElement(element, 'TEXT4')) {
                    section = "Text4";
            }
        if(section !== "")
            return true;
    }, 5000).then(()=>{
    <here you can do anything based on 'section'>

}

注意 - 我还没有验证编译错误..所以检查一下。

答案 1 :(得分:0)

不确定您在做什么,但可以使用"or"加入多个预期条件:

var conStatus = $('.message');
var containsText1 = EC.textToBePresentInElement(conStatus, 'TEXT1');
var containsText2 = EC.textToBePresentInElement(conStatus, 'TEXT2');
var containsText3 = EC.textToBePresentInElement(conStatus, 'TEXT3');
var containsText4 = EC.textToBePresentInElement(conStatus, 'TEXT4');

browser.wait(EC.or(containsText1, containsText2, containsText3, containsText4), 5000);