Можно ли использовать текст из локатора в цикле?

Доброго времени суток!

Относительно недавно стал погружаться в java-тестирование.
Тестирую сайт по страхованию автомобилей.
Цель - нужно создать несколько водителей, у каждого своя фамилия.

Ниже кусок кода :

public LimitDrivers addNewDriver(String surname)

        driver.findElement(addDriver).click(); 

//данная кнопка добавляет поле ввода фамилии для водителя

        driver.findElement(By.name("xml[Drivers][1][PhisicalSection][Surname]")).click();
        driver.findElement(By.name("xml[Drivers][1][PhisicalSection][Surname]")).sendKeys(surname);

//тут описывается клик на поле ввода и ввод фамилии водителя

Как видно выше, локатор используется по “name” и выглядит “xml[Drivers][1][PhisicalSection][Surname]” , соответственно, при каждом нажатии кнопки driver.findElement(addDriver).click() - будет создаваться поле ввода фамилии , где индекс [1] будет увеличиваться , т.е. xml[Drivers][2][PhisicalSection][Surname] , xml[Drivers][3][PhisicalSection][Surname] и т.д.

Вопрос: как можно реализовать цикл, чтобы брался текст из локатора, привязывался к этому индексу [1] и увеличивал его на 1 при каждой итерации??

У фреймворков JUnit 5 и TestNG есть функции для параметризированных тестов

Или можно через цикл for, если вы не используете вышеперечисленные фреймворки

собственно подойдёт for цикл, но как его реализовать в данном примере?

Создаёте массив

String surnames = {"Иванов","Петров"}

Дальше в цикле перебираете имена

for(int i=0; i < surnames.length - 1; i++){
driver.findElement(addDriver).click();
driver.findElement(By.name("xml[Drivers][" + String.valueOf(i) + "][PhisicalSection][Surname]")).click();
driver.findElement(By.name("xml[Drivers][" + String.valueOf(i) + "][PhisicalSection][Surname]")).sendKeys(surnames[i]);
}
1 лайк

Спасибо за помощь!

1 лайк

Пожалуйста)