我想測試一個元素是否不存在於頁面上。如何測量元素在Protractor頁面上不存在?
我曾嘗試使用下面的方法試了,但每次我得到一個錯誤:
方法:
expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
錯誤:失敗:超時等待量角器 後的頁面同步秒。請參閱https://github.com/angular/protractor/blob/master/docs/f ...
你推薦什麼方法?
我想測試一個元素是否不存在於頁面上。如何測量元素在Protractor頁面上不存在?
我曾嘗試使用下面的方法試了,但每次我得到一個錯誤:
方法:
expect(element(CastModule.PersonXpath).isDisplayed()).toEqual(false);
錯誤:失敗:超時等待量角器 後的頁面同步秒。請參閱https://github.com/angular/protractor/blob/master/docs/f ...
你推薦什麼方法?
錯誤不應與檢查元素缺失有關。請嘗試以下操作:
var elm = element(CastModule.PersonXpath);
expect(browser.isElementPresent(elm)).toBe(false);
參見:
呀,測試不可見可蘇茨基。您應該可以使用isPresent()
,這意味着在dom中,其中isDisplayed()
意味着它實際上可見,我認爲這是您的問題。嘗試...
expect(element(CastModule.PersonXpath).isPresent()).toEqual(false);
您可能還想將其分解爲方法並使用Expected Condition。
很酷,謝謝。例如,如果我檢查「x」分鐘後元素不再顯示,我需要使用什麼? – user3188198
我設法找到了一個解決方案,使用量角器庫。
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
不工作),只需使用:
if (!EC.invisibilityOf(ug.personXpath)) {
throw new Error("Partner logo is not displayed");
}
的錯誤看起來並不像它與正在顯示的元素做。它看起來像是與頁面同步。試着忽略了同步,然後等待角以上的預計有:
browser.ignoreSynchronization = true;
browser.waitForAngular();
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`
Lulz @alecxe ......你在我之前提交! – Brine