在Selenium中自动循环的最佳方法

时间:2012-04-10 15:04:07

标签: selenium webdriver

我想自动执行一些重复的任务 - 比如不止一次提交某个表单。我对页面加载问题感到磕磕绊绊,所以我想让你问你是怎么做的。说,我想在表单中提交十个不同的条目。所以我可以这样做:

for (int i =0; i<10; i++){
  String name = getNextName();
  String surname = getNextSurname();
  Webelement newUserButton = driver.findElement(By.id("newUser")));
  newUserButton.click();
  WebElement name = driver.findElement(By.id("name")));
  name.sendKeys(name);
  WebElement surname = driver.findElement(By.id("surname")));
  surname.sendKeys(surname);
  WebElement submit = driver.findElement(By.id("submit")));
  submit.click();
}

但我发现如果我的测试环境比较慢,上面的循环就会崩溃。我试图在代码中添加一些Thread.sleep(),但是如果我想提交,比如200个条目,那么编写脚本可能会很长。

是否有任何功能只能等待表单准备就绪?

2 个答案:

答案 0 :(得分:2)

听起来您需要添加明确的等待 - 请参阅Webdriver页面Advanced Usage - Explicit and Implicit Waits

使用显式等待,您可以告诉webdriver等待表单处于就绪状态 - 通常某个字段可见或重置(取决于单击提交时表单发生的情况)。

答案 1 :(得分:1)

如果您使用的是Selenium 2.0,您可以通过在代码中创建WebDrivewWait对象来使WebDriver等到某些操作发生。您可以查看此链接以获取更多信息 - http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html