通过隐式等待到stalenessOf这样的预期条件?

时间:2015-11-13 23:12:32

标签: javascript selenium selenium-webdriver protractor

我们可以为失败的预期条件传递超时:

browser.wait(EC.stalenessOf(elementThatIsNotStale), 3000, 'Error: Element was found in the dom');

我们可以传入一个值来覆盖当前成功使用的隐式超时吗? 即,我想确保一个元素没有附加到dom,但我不想等待我们的隐式超时设置为30秒。我想传递失败和传递计时器:

browser.wait(EC.stalenessOf(elementThatIsStale), 3000, 3000, 'Error: Element was found in the dom');

这样,在返回结果之前,它只检查3秒,无论通过或失败。

有没有办法传入隐式超时覆盖?

2 个答案:

答案 0 :(得分:1)

根据documentationbrowser.wait()只接受3个参数:

  • 预期条件函数
  • 超时值
  • 可选的超时消息

无法通过browser.wait()更改隐式超时。您可以通过implicitlyWait()尝试使用隐式等待超时,而不是测试:

browser.implicitlyWait(3000);
browser.wait(EC.stalenessOf(elm), 3000, 'Error: Element was found in the dom');
browser.implicitlyWait(DEFAULT_IMPLICIT_TIMEOUT);  // back to a default value

答案 1 :(得分:0)

在检查否定情况(不存在/不显示)时,需要将隐式等待设置为非常低的值,然后等待条件,然后将隐式等待设置回其原始值。

这样的事情:

browser.driver.manage().timeouts().implicitlyWait(NO_IMPLICIT_WAIT);
browser.waitUntil(EC.stalenessOf(ele), message, NEGATIVE_WAIT); 
browser.driver.manage().timeouts().implicitlyWait(DEFAULT_IMPLICIT_WAIT);

其中:

DEFAULT_IMPLICIT_WAIT是驱动程序在每次调用element()之前等待的默认超时 NO_IMPLICIT_WAIT是一个低值,如零 NEGATIVE_WAIT是等待元素不存在/不显示时使用的超时