我的一个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()如何在超时中结束?我怎么可能解决这个问题?
答案 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插件需要元素正确定位。
在我们获得所需的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());
}
希望现在适合你。