【问题标题】:How can I test that an element does not exist on the page with Protractor?如何使用量角器测试页面上不存在元素?
【发布时间】:2016-01-29 19:37:27
【问题描述】:

我正在尝试测试页面上是否不存在元素。

我尝试过使用以下方法,但每次都报错:

方法:

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);

错误:失败:超时等待量角器与页面同步后 秒。请看https://github.com/angular/protractor/blob/master/docs/f ...

你推荐什么方法?

【问题讨论】:

    标签: jasmine protractor


    【解决方案1】:

    错误不应与检查元素是否缺失有关。请尝试以下操作:

    var elm = element(CastModule.PersonXpath);
    expect(browser.isElementPresent(elm)).toBe(false);
    

    另见:

    【讨论】:

    • Lulz @alecxe...你在我之前提交了!
    • 得到错误element 不是业力报告中的功能
    【解决方案2】:

    是的,测试不可见可能很糟糕。你应该可以使用isPresent(),这意味着在dom中,isDisplayed()意味着它实际上是可见的,我认为这是你的问题。试试……

    expect(element(CastModule.PersonXpath).isPresent()).toEqual(false);
    

    您可能还想将其分解为一个方法并使用Expected Condition

    【讨论】:

    • 酷,谢谢。例如,如果我检查“x”分钟后元素不再显示,我需要使用什么?
    【解决方案3】:

    该错误看起来与正在显示的元素无关。看起来它与页面同步有关。尝试忽略同步,然后等待角度高于期望:

    browser.ignoreSynchronization = true;
    browser.waitForAngular();
    expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
    

    【讨论】:

      【解决方案4】:

      要检查可见性(以防 isDisplayedisPresent 不起作用),只需使用:

       if (!EC.invisibilityOf(ug.personXpath)) {
         throw new Error("Partner logo is not displayed");
       }
      

      【讨论】:

        【解决方案5】:

        我设法找到了解决方案,使用量角器库。

        var EC = protractor.ExpectedConditions;     browser.wait(EC.invisibilityOf(element(by.xpath(CastModule.PersonXpath))), 5000).then(function() {
                    if (EC.invisibilityOf(element(by.xpath(x.LanguagesXpath)))) {
                        console.log("Persons module is not present - as expected for this scenario");
                    } else {
                        throw new Error("Element STILL present");
                    }
                });
            });
        

        【讨论】:

          【解决方案6】:

          您也可以尝试以下代码来处理是否显示元素。下面的代码根据元素的可见性返回真或假。

          browser.wait(() => {
           return element(by.className("claasName")).isDisplayed()
                .then(
                     (hasDisplayed) => {
                        console.log("Has displayed: "+ hasDisplayed);
                        return hasDisplayed === false;
                      }
                  );
             }, 5000)
                  .then(
                      () => {
                          return true;
                      },
                      () => {
                          return false;
                      }
                  )
          

          【讨论】:

            【解决方案7】:

            使用存在元素使用:

            var elm =  element(CastModule.PersonXpath);
                            elm.isPresent().then(function (present) {
                                if (present) {
                                     element(CastModule.PersonXpath).then(function (labels) {
            
                                    });
            
                                } else {
                                    console.log('Element did not found');
            
                                }`enter code here`
            

            【讨论】:

              【解决方案8】:
              expect(elem.isNull===undefined).to.be.equal(true);
              

              【讨论】:

                猜你喜欢
                • 2017-09-16
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-04-27
                相关资源
                最近更新 更多