一尘不染

Selenium Webdriver上的超时默认值

selenium

我感兴趣的selenium超时的默认值webdriver. ImplicitlyWaitSetPageLoadTimeoutSetScriptTimeout。因为我想知道,我需要为这些超时设置值吗?或默认值适合selenium
webdriver工作。但是我找不到正确的答案,有人说默认值是0,而另一个人说是30秒。


阅读 378

收藏
2020-06-26

共1个答案

一尘不染

这三个超时由Selenium方程的服务器端管理。您的脚本(使用Java,Python,Ruby,C#或其他任何语言)是将命令发送到位于浏览器中的服务器的客户端。(可能会有中介程序将命令中继到浏览器,例如Selenium网格。不幸的是,有时也称为“服务器”。)

源自Selenium 的WebDriver规范已确定以下值:

  • 对于隐式等待:0秒。这意味着,如果selenium命令没有立即找到一个元素,它将立即报告,而不是等到找到一个元素。

  • 对于页面加载:300秒。

  • 对于脚本超时:30秒。

(规范以毫秒为单位给出值。为了方便阅读,我将其转换为秒。)

Selenium现在遵循WebDriver规范。


过去,Selenium为此使用了其他值。例如,Firefox驱动程序用于定义其超时,如下所示:

  • 默认情况下,隐式等待超时设置为0。这意味着,如果找到元素的命令找不到任何内容,它将不会等待。

  • 默认情况下,页面加载超时设置为-1。这意味着Selenium将无限期等待页面加载。

什么Saifur 发现
一样的页面加载超时。这是Selenium客户端和Selenium服务器之间的超时,在Saifur找到的页面上没有特别说明。

  • 默认情况下,脚本超时设置为0。源代码中的注释说明:

该会话应等待异步脚本完成执行的时间(以毫秒为单位)。如果设置为0,则直到脚本执行后的下一个事件循环,超时才会触发。这将使脚本使用基于0的setTimeout来完成。

因此,即使将其设置为零,异步脚本仍然可以执行,但是必须在Selenium的超时机会再次运行之前完成。

这来自Selenium用于Firefox的代码。其他浏览器使用不同的代码库,但至少在某些适合Selenium本身的事情(如这些超时)方面,它们应该表现出一致的行为。因此,其他浏览器的值及其解释也应相同。

2020-06-26