为什么我的Selenium click()导致超时?

时间:2012-09-26 15:09:22

标签: selenium timeout click webdriver

我的一个Selenium测试发出点击按钮以创建新用户:

seleniumDriver.findElement(By.xpath("//input[@value='Save']")).click();

但是,验证失败(意味着失败!),以便显示<div>以通知用户更正某些输入字段。这种方法非常有效,但自动化测试会中止,并显示以下错误消息:

com.thoughtworks.selenium.SeleniumException: Timed out waiting for action to finish
    at org.openqa.selenium.internal.seleniumemulation.Timer.run(Timer.java:44)
    at org.openqa.selenium.WebDriverCommandProcessor.execute(WebDriverCommandProcessor.java:145)
    at org.openqa.selenium.WebDriverCommandProcessor.doCommand(WebDriverCommandProcessor.java:75)
    at com.thoughtworks.selenium.DefaultSelenium.click(DefaultSelenium.java:193)
    at com.holcim.logon.admin.web.admin.UserTest.createUser(UserTest.java:354

click()如何在超时中结束?我怎么可能解决这个问题?

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,这是由于没有足够的延迟来加载页面

您可以使用以下命令

增加加载页面的超时延迟

driver.Manage()。Timeouts()。SetPageLoadTimeout(new TimeSpan(0,0,0,0,timespan));

答案 1 :(得分:0)

可能解决您的问题: 1)而不是xPath找到所需元素的css选择器。 它会是这样的:

String cssSelector = "input[value='Save']";

但是在你使用它之前在firepath中验证,ffox中的firebug插件需要元素正确定位。

firepath verify

在我们获得所需的css选择器后,我们可以使用始终有效的方法。使用js函数 将执行所需元素的单击。

public void jsClick(String cssSelector){
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
}

希望现在适合你。