Selenium WaitForCondition在30分钟而不是20秒后失败

时间:2011-10-06 09:30:13

标签: selenium

在我们的功能测试中,我们使用ISelenium.WaitForCondition方法来测试AJAX调用是否使用类似的东西完成:

_selenium.WaitForCondition("!selenium.isElementPresent(\"" + locator + "\")", "20000");

有时这段代码因SeleniumException而失败:

Selenium.SeleniumException: ERROR: Command timed out

但是相反,20000毫秒失败需要30分钟,之后所有后续的硒调用都会失败,例如:

SeleniumException : ERROR Server Exception: unexpected command
json={command:"waitForCondition",target:"!selenium.isElementPresent(\"//div[contains(@id, \'atlProgress\') and contains(@style, \'display: block\')]\")",value:"20000"}
in place before new command waitForCondition could be added

我们使用.NET Selenium端口:ThoughtWorks.Selenium.Core,Version = 2.7.0.0,而不是WebDriver。

我们可以做些什么来避免这些错误?

1 个答案:

答案 0 :(得分:0)

Selenium使用(至少)两次超时:

  • 一个用于各种'等待'命令,并发送到浏览器以便javascript等待 - 您可以像在'waitForCondition'中那样在一些调用中发送它;

  • 另一个是服务器超时,可以在启动服务器时设置,它控制Selenium服务器在返回“命令超时”错误之前等待浏览器响应的时间。

    < / LI>

我相信您遇到的问题是您发送命令等待20秒,但您的服务器永远不会从浏览器获得响应并等待30分钟。我估计你已经将服务器超时设置为30分钟。

缺少响应可能是由崩溃或挂起的浏览器引起的,这反过来导致“意外命令”错误。我在这个answer中更详细地描述了这个案例。