selenium.waitForPageToLoad(“3000”)在3000 ms后超时

时间:2011-02-04 10:52:29

标签: java unit-testing spring automation selenium

我正在使用selenium运行一些非常简单的测试,一些测试在我的慢速构建机器上随机失败并发出此错误:

com.thoughtworks.selenium.SeleniumException:3000ms后超时

反对此代码:

seleniumStart();
selenium.open("*****");
selenium.waitForPageToLoad("3000");     
selenium.type("j_username", LoginTest.DEFAULT_ADMIN_USERNAME );
selenium.type("j_password", LoginTest.DEFAULT_ADMIN_PASSWORD );
selenium.click("loginbutton");
selenium.waitForPageToLoad("3000");
selenium.click("nav_form:managepatients");

它使用spring security,jsf作为前端。有谁知道为什么这是hapenning?我已经坚持了2天。

提前感谢。

4 个答案:

答案 0 :(得分:2)

3000毫秒只有3秒,这有时可能不足以加载页面,所以也许你只需要提高超时时间?等待300万毫秒的waitForPageToLoad似乎更合适。

答案 1 :(得分:1)

对于我来说,比selenium.waitForPageToLoad("xxxxxx");更健壮的方式对我有用 -

while (!(selenium.isElementPresent("any element on page")==true)) {
     selenium.setSpeed("10");
     Thread.sleep(10);
    }

这使您可以等到某个预定元素加载,然后执行后续操作。测量响应时间也很好......

答案 2 :(得分:0)

可能页面在那段时间没有加载,你是否试过提高超时说30000如果不起作用你最好的选择是在selenium运行时观看浏览器

答案 3 :(得分:0)

您可以增加等待页面加载时间。 要么 使用:selenium.setSpeed("2000"); - 将等待2秒它在setSpeed延迟之后运行每个命令,以setSpeed中提到的毫秒数为单位。因此,在每次操作之后,这种情况下的间隙为2秒,这将有助于操作完成,而不是切换到下一个操作。