selenium webdriver中“Thread.sleep(5000)”命令的替代方法

时间:2015-05-05 13:32:04

标签: selenium selenium-webdriver

我需要在自动化测试用例的每个操作后使用此“Thread.sleep(5000)”命令。 是否有其他方法可以在每次操作后跳过编写此命令。

如果我跳过此命令,我得到“超时”和“找不到元素”错误。

2 个答案:

答案 0 :(得分:4)

您可以使用隐式等待。初始化WebDriver后添加以下行: (C#中的例子)

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
  

隐式等待是告诉WebDriver对DOM进行轮询   尝试查找一个或多个元素的时间量   没有立即可用。默认设置为0.一旦设置,   隐式等待是为WebDriver对象实例的生命周期设置的。

引自:https://stackoverflow.com/a/6993597/4741659

答案 1 :(得分:4)

在每个动作之后放Thread.sleep(5000)绝对不是个好主意。如果您将进行大量测试,则需要花费很多时间(如小时)才能完成所有测试。

对于这些情况,WebDriver中有waiting机制,它基本上同步代码和浏览器行为中的操作,因此您不会获得ElementNotFoundException,因为所有操作都将同步。

您可以在Selenium docs http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

上看到很多示例