Здравствуйте. У меня практически такая же проблема.
Есть код
@Test
public void f() throws BiffException, IOException, InterruptedException
{
FileInputStream fi = new FileInputStream("test.xls");
Workbook workbook = Workbook.getWorkbook(fi);
Sheet sheet = workbook.getSheet(0);
int my_Row = sheet.getRows(); //Определяем количество заполненных строк в xls файле
//Цикл прохода по xls файлу (Построчно)
//Создаем новый объект класса
d1 = new FirefoxDriver();
d1.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
for (int i=1;i<my_Row;i++) {
d1.get(url); //Открываем страницу добавления оборудования
//Расставляем данные из файла в соответствующие поля формы
d1.findElement(By.name("Control.Place")).sendKeys(sheet.getCell(0,i).getContents());
d1.findElement(By.name("Control.From")).sendKeys(sheet.getCell(1,i).getContents());
d1.findElement(By.name("Control.Model")).sendKeys(sheet.getCell(2,i).getContents());
d1.findElement(By.name("Control.SerialNo")).sendKeys(sheet.getCell(3,i).getContents());
d1.findElement(By.name("Control.IPAddress")).sendKeys(sheet.getCell(4,i).getContents());
d1.findElement(By.name("Control.Type")).sendKeys(sheet.getCell(5,i).getContents());
...
d1.findElement(By.name("ChannelDevices[3].Device.SerialNo")).sendKeys(sheet.getCell(20,i).getContents());
d1.findElement(By.name("ChannelDevices[3].Device.Model")).sendKeys(sheet.getCell(21,i).getContents());
// Thread.sleep(5000);
d1.findElement(By.xpath("//*[@id='main']/form/input")).click(); // Сабмитим
//Thread.sleep(5000); //Ожидание загрузки страницы
// Проверяем наличие на странице заголовка, что означает прохождение теста, если заголовок не найден, тест провален
d1.findElement(By.xpath("//*[@id='main']/h2")).getText().contains("Список контроллеров");
}
d1.quit();
}
Первый раз проходит нормально, во второй раз застревает при нажатии на кнопку.
Если добавить Thread.sleep(5000), то отрабатывает нормально, но понятно, что это плохой вариант.
Почему так происходит, ведь элемент (кнопка) уже есть на странице?
Не успевает отработать скрипт проверки корректности заполнения формы? Тогда как правильно подождать?