量角器等待元素在DOM中

Tyl*_*ger 35 selenium angularjs protractor

我在使用Protractor时遇到了一些麻烦.我有一个非常奇怪的ui-router状态,很难从其他元素开始处理页面.有没有办法让量角器等到元素最终出现在DOM中?不可见/显示,但实际创建?我一直在尝试使用等待元素,但显然无法选择.

browser.driver.wait(function () {
    return elem.isDisplayed();
});
Run Code Online (Sandbox Code Playgroud)

Mic*_*mza 64

您应该能够browser.waitpresenceOfExpectedCondition一起使用:

var until = protractor.ExpectedConditions;
browser.wait(until.presenceOf(elem), 5000, 'Element taking too long to appear in the DOM');
Run Code Online (Sandbox Code Playgroud)

  • 将它命名为"直到"的好主意!可读性至关重要. (23认同)
  • 什么是`browser.wait`和`browser.driver.wait`之间的区别? (5认同)

Sai*_*fur 13

量角器已将ExpectedCondition包含在显式等待中,让您在一段时间内等待元素.您应该能够执行以下操作:

var EC = protractor.ExpectedConditions;

browser.driver.wait(function () {
    browser.wait(EC.visibilityOf(elem), 10000);
    return elem;
});
Run Code Online (Sandbox Code Playgroud)