我看到其他量角器相关帖子提到了如何等待元素变得可见。但是,最近,我遇到了一个相反的用例。我想等一个元素,直到它变得不可见。因为我找不到任何具体的信息。我继续前进,想出了一个解决方案。
var ptor = protractor.getInstance();
ptor.wait(function() {
return element(by.css('#my-css-here')).isDisplayed().then(function(isVisible){
console.log('is visible :' + isVisible);
return !isVisible;
});
}, 12000).then(function(){
//do whatever you want
});
希望它有所帮助。任何建议都是受欢迎的。
谢谢,
答案 0 :(得分:16)
使用elementexplorer(https://github.com/angular/protractor/blob/master/docs/debugging.md)我查看了量角器对象,找到了一个对我来说非常有效 的答案:
var el = element(by.id('visibleElementId'));
browser.driver.wait(protractor.until.elementIsNotVisible(el));
答案 1 :(得分:8)
来自@Machtyn
这应该是正确的答案:
var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)), someTimeoutInMilli);
答案 2 :(得分:0)
没有一个解决方案适合我。请看下面的代码:
var protractor = require('protractor');
describe('Testing', function () {
it('Should show the settings button', function () {
var EC = protractor.ExpectedConditions;
var settings = $('.settings');
var isSettingVisible = EC.visibilityOf(settings);
browser.get('http://localhost:8080/#/edomonitor');
console.log("--------------------welcome 1-------------------");
protractor.browser.wait(isSettingVisible, 10000, "Searching for settings").then(() => {
console.log("waiting complete");
}, (error) => {
console.log(error);
})
expect(2).toEqual(2);
});
});
答案 3 :(得分:0)
量角器现在内置了invisibilityOf函数。
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be no longer visible on the dom.
browser.wait(EC.invisibilityOf($('#abc')), 5000);