на странице есть 2 кнопки с одинаковым селектором, надо поочередно их нажимать. Как это сделать ?

Есть вот такой код и .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)

2 лайка

Спасибо )))

Установи мой ответ как решение, не забывай )

Я бы рекомендовал всё-таки разделять эти кнопки. Напиши нормальные селекторы, которые будут уникальны для каждой кнопки и нажимай их в том порядке, в котором тебе нужно. Решение get(X) стабильно работает только в случае, если тебе всё равно, в каком порядке нажимать кнопки и при этом надо нажать их все. Если порядок важен - то стабильность твоих тестов будет зависеть от внутренней реализации findAll, которая вполне может измениться после обновления версии селениума. Более того, если на какой-то итерации будет добавлена 3-я кнопка с таким же локатором (а локатор у тебя такой, что это не исключено) - то какие 2 из 3-х кнопок нажмёт твой тест - будет загадкой.

2 лайка

Не забывайте еще, что если кнопки динамические, то велика вероятность того, что findElements вернет вам список нулевой размерности, что в итоге приведет к неизбежному ArrayIndexOutOfBoundsException на вызов get(N).

1 лайк