Да, то что я написал не совсем подходит. Проще конечно объяснить саму ситуацию для тестирования. К примеру у меня есть 100 кнопок каждая со своим id, но не все из этих кнопок доступны для клика. Мне нужно выполнить клик на кнопку после чего у меня изменится значение count. К примеру мне нужно пройтись по такому списку и кликнуть на 6 кнопок чтобы count был 6, а потом продолжить тест дальше. Как то так.
Попробуй в цикле вместо selenium.click просто выводить результат в консоль, например, а потом найти эти элементы на странице. Может, их вообще там нет.
Была похожая проблема, когда тест выполнялся в эксплорере, а xpath элементов я смотрел в фаерфоксе. В итоге выяснилось, что в эксплорере html выглядит по-другому и тех элементов, которые я искал, там просто нет.
public static void main(String []args){
String[] locators= {"css=#g571 > text", "css=#g572 > text", "css=#g573 > text"};
for (int i = 0; i < locators.length; i++) {
clickOnPlace(locators[i]);
String ticketCount = saveTicketCountWhileLoop(app);
System.out.println(ticketCount);
if (ticketCount.equals("1")) {
break;
}
app.getNavigationHelper().clickOnSaleButton();
Почему когда не добавляешь строчку app.getNavigationHelper().clickOnSaleButton(); , то оно после проверки условия if повторяет цикл а когда ее добавил то оно на первой итерации выходит ?
Теперь почему-то ticketCount при Exception не всегда равен “1” и получается выход с цикла нет. Надо поменять на условие if (Integer.parseInt(ticketCount) >= 1 ) {
break;
Сегодня еще чуток отрефакторил код =) потому как при каждом тесте брались постоянно использованные уже ранее элементы, то я решил брать случайный элемент из массива. public static void main(String []args){
String[] locators= {“css=#g571 > text”, “css=#g572 > text”, “css=#g573 > text”};
int randomLocators = (int)(Math.random()*locators.length);
for (int i = 0; i < locators.length; i++) {
try {
clickOnLocator(locators[randomLocators]);
} catch (Exception SeleniumException) {
}
String Count = saveCountWhileLoop();
System.out.println(Count);
if (Integer.parseInt(Count) >= 1) {
break;
} else if (Count.equals("0")) {
continue;
}