WebDriver 隐式等待未按预期工作

Posted

技术标签:

【中文标题】WebDriver 隐式等待未按预期工作【英文标题】:WebDriver implicit wait is not working as expected 【发布时间】:2013-12-10 04:12:29 【问题描述】:

    WebDriver 隐式等待仅等待 10 秒,即使我给了 30 或 60 秒,在加载页面之前控制移动到下一步。 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 这里我已经定义了像上面一样的隐式超时,如果我需要添加任何代码其他代码,请纠正我?

    webdriver 中是否有任何方法用于 waitforPageToLoad?我尝试使用driver.manage().timeouts().pageLoadTimeout(50, TimeUnit.SECONDS);,但它没有按预期工作。

请协助我。

【问题讨论】:

在 selenium WebDriver 中你不需要把隐式等待页面加载 WebDriver 自动管理这个任务。直到你的网页没有完全加载它才会执行下一个命令。 Naveen,它没有等到页面/元素等待,我对此进行了研发,然后发布了这个问题。 你在滥用隐式等待。在驱动程序构建的一开始就设置一次,并且只设置一次。 【参考方案1】:

如果你想等待特定元素加载它最好使用显式等待

【讨论】:

是的,我可以使用显式等待,但我只是想知道,隐式等待是否有效?为什么它implicitwait 只需要 10 秒?【参考方案2】:

当你说隐式等待只需要 10 秒时,你是什么意思?你的意思是当你发送隐式等待到 30 秒时,WebDriver 只需 10 秒即可找到元素?你确定其他东西没有破坏,给你一种隐含等待不起作用的错误感觉吗?

我过去曾通过示例回答过关于隐式和显式等待的类似问题。你可以找到它here。它还谈到了通用等待策略等。

【讨论】:

nilesh,这里的webdriver控件在完全加载页面之前进入下一步,它只等待10秒 好的。这是您可以在公共网站上复制的东西吗?如果是这样,请更新您的问题并在 google selenium 项目上提交错误。至于您的问题,我认为您需要结合使用我在答案中上面链接中提到的显式等待和通用等待【参考方案3】:

我不得不对特定问题使用隐式等待,但发现它没有完成应做的工作。 FluentWait 效果很好。

我最终使用 Thread.sleep() 来强制停止正在运行的进程,它确实完成了我的工作。

顺便说一句:我在 Firefox 27 和 31 版本上对其进行了测试。其他浏览器不知道!

【讨论】:

以上是关于WebDriver 隐式等待未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 discordJDA 等待消息未按预期工作

无法从异步函数获取返回值,等待未按预期工作(Vue API 服务)

HttpURLConnection setReadTimeOut()未按预期工作

LibreOffice 对话框未按预期工作

身份服务器 4 中的静默令牌更新,js 客户端应用程序未按预期工作

webdriver显式和隐式等待