Jasmine 如何使用量角器测试页面上不存在元素?

Jasmine 如何使用量角器测试页面上不存在元素?,jasmine,protractor,Jasmine,Protractor,我试图测试页面上是否没有元素 expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false); 我尝试使用以下方法,但每次都会出现错误: expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false); 方法: expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false)

我试图测试页面上是否没有元素

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
我尝试使用以下方法,但每次都会出现错误:

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
方法:

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
错误:失败:等待量角器与页面同步后超时 秒。请看

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

您推荐什么方法?

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

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
var elm = element(CastModule.PersonXpath);
expect(browser.isElementPresent(elm)).toBe(false);
另见:

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

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

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

您可能还希望将其分解为一个方法并使用一个

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

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
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");
            }
        });
    });
要检查可见性(如果
isDisplayed
isPresent
不起作用),只需使用:

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
 if (!EC.invisibilityOf(ug.personXpath)) {
   throw new Error("Partner logo is not displayed");
 }

错误看起来与显示的元素无关。看起来这与页面同步有关。尝试忽略同步,然后使用以下命令等待超出预期的角度:

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

要使用元素的存在,请使用:

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
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`

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

expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(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;
            }
        )

Lulz@alecxe。。。你比我先投降!获取错误
元素
不是karma reportCool的功能,谢谢。例如,如果我检查“x”分钟后元素不再显示,我需要使用什么?