每当我尝试等待从量角器测试正在测试的网页上的当前 DOM 树中删除 DOM 元素时,我都会遇到此问题。当我尝试等待 DOM 元素通过 user2912739 在另一个线程中提供的这项好技术隐藏时,我已经掌握了它。
var el = element(by.css('.your-css-class'));
return browser.wait(protractor.until.elementIsNotVisible(el));
这工作相当不错。然而,当等待一个元素从 DOM 树中删除时,.isDisplayed()
and .isPresent()
或者上面的行似乎不起作用。测试将继续运行,但看起来它正在尝试获取该元素但从未成功,因此它最终根据配置文件的超时设置而超时。例如。这是日志。
超时:等待规范完成 30000 毫秒后超时
每当您处理测试是否从 DOM 树中删除元素时,这种用例可能会非常频繁,例如,当用户单击消除该模式元素的操作时,模式会被关闭并从页面中删除,或者您只想“删除”元素,使其不再存在于页面上。因此,在测试中,您只想在从 DOM 树中删除后立即继续测试运行。
我搜索了 Protractor 和 Web Driver api,似乎没有 api 可以完成这项工作。
不确定你在哪里protractor.until
因为这不是核心库的一部分。这是使用量角器的方法:
var el = element(by.css('.your-css-class'));
return browser.wait(function() {
return el.isPresent().then(function(present) {
return !present;
})
});
Once 壮举(预期条件) https://github.com/angular/protractor/pull/1703在(可能是量角器1.7)中,你可以这样做:
var EC = protractor.ExpectedConditions;
var el = element(by.css('.your-css-class'));
return browser.wait(EC.not(EC.presenceOf(el)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)