Есть вот такой код и .get(0) - выдает ошибку WebElement button = driver.findElement(By.cssSelector(".btn.btn-block.btn-lg.btn-default")).get(0);
Используй driver.findElements(By.cssSelector(".btn.btn-block.btn-lg.btn-default")).get(0); // get(1)
Спасибо )))
Установи мой ответ как решение, не забывай )
Я бы рекомендовал всё-таки разделять эти кнопки. Напиши нормальные селекторы, которые будут уникальны для каждой кнопки и нажимай их в том порядке, в котором тебе нужно. Решение get(X)
стабильно работает только в случае, если тебе всё равно, в каком порядке нажимать кнопки и при этом надо нажать их все. Если порядок важен - то стабильность твоих тестов будет зависеть от внутренней реализации findAll
, которая вполне может измениться после обновления версии селениума. Более того, если на какой-то итерации будет добавлена 3-я кнопка с таким же локатором (а локатор у тебя такой, что это не исключено) - то какие 2 из 3-х кнопок нажмёт твой тест - будет загадкой.
Не забывайте еще, что если кнопки динамические, то велика вероятность того, что findElements
вернет вам список нулевой размерности, что в итоге приведет к неизбежному ArrayIndexOutOfBoundsException
на вызов get(N)
.