【问题标题】:Pass in implicit wait to expected conditions like stalenessOf?将隐式等待传递给预期条件,如 stalenessOf?
【发布时间】:2017-04-06 23:53:23
【问题描述】:

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

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 秒,无论通过或失败,然后返回结果。

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

【问题讨论】:

    标签: javascript selenium selenium-webdriver protractor


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      类似这样的:

      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 是等待元素不存在/不显示时使用的超时时间

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-10
        • 2012-08-15
        • 2020-10-30
        • 2020-09-21
        • 1970-01-01
        • 2021-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多