Javascript 将隐式等待传递到预期条件,如stalenessOf?

Javascript 将隐式等待传递到预期条件,如stalenessOf?,javascript,selenium,selenium-webdriver,protractor,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),

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

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秒钟

是否有方法传递隐式超时覆盖?

根据,
浏览器。wait()
仅接受3个参数:

  • 期望条件函数
  • 超时值
  • 可选超时消息
无法通过
browser.wait()
更改隐式超时。您可以尝试通过以下方式使用隐式等待超时:

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

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

大概是这样的:

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是一个类似于零的低值 负等待是等待元素不存在/不显示时使用的超时