【问题标题】:Matching text in element with Protractor使用量角器匹配元素中的文本
【发布时间】:2017-01-11 23:59:09
【问题描述】:

我在页面上有一个元素。并且可能有不同的文本。我正在尝试这样做(代码如下),它没有打印到控制台。

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;
}

谢谢

【问题讨论】:

    标签: javascript node.js protractor


    【解决方案1】:

    我看到了两个问题。首先,不确定“状态”是什么?你需要纠正那个。其次,browser.wait 在找不到匹配条件并且超时到期时会抛出错误/异常,因此,如果您的第一个条件不满足,它将抛出超时异常并且永远不会进入第二个。相反,请尝试以下类似的方法

    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'>
    
    }
    

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

    【讨论】:

      【解决方案2】:

      不确定你在做什么,但你可以通过"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);
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多