如何等待一个元素从 DOM 中移除?

2024-03-07

每当我尝试等待从量角器测试正在测试的网页上的当前 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(使用前将#替换为@)

如何等待一个元素从 DOM 中移除? 的相关文章

随机推荐