我正在尝试测试页面上是否存在元素。
我尝试过使用以下方法,但每次都出错:
方法:
expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
错误:失败:等待量角器与页面同步后超时 秒。请参阅https://github.com/angular/protractor/blob/master/docs/f ...
您推荐什么方法?
答案 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)
要检查可见性(如果isDisplayed
或isPresent
无法正常工作),请使用:
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);