如何使用Protractor测试页面上不存在元素?

时间:2016-01-29 19:37:27

标签: jasmine protractor

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

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

方法:

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

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

您推荐什么方法?

8 个答案:

答案 0 :(得分:5)

错误不应与检查缺少元素有关。请尝试以下方法:

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

另见:

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:1)

要检查可见性(如果isDisplayedisPresent无法正常工作),请使用:

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:-1)

使用元素使用的存在:

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`

答案 7 :(得分:-1)

expect(elem.isNull===undefined).to.be.equal(true);