Цикл не работает, потому что для проверки условия необходимо проверить условие .
Состояния while
:
while(_vechRep.btnNextDriver.Displayed && _vechRep.btnNextDriver.Enabled)
Это означает, что на каждой итерации он ищет существование _vechRep.btnNextDriver
. Поскольку вы перешли на следующую страницу, она больше не существует; и таким образом вы ошибки. Цикл не может проверить .Displayed
или .Enabled
, потому что его там нет.
Вместо этого вам нужно изменить проверку цикла на наличие кнопки (или объекта, или что у вас есть). Код Java будет:
List<WebElement> things = getDriver().findElements(By.xpath("//button[@class='vt-client-paged-list__page-button vt-client-paged-list--button-visible'][text()='Next'"));
while(things.size() > 0) {
// Do stuff
things = getDriver().findElements(By.xpath("//button[@class='vt-client-paged-list__page-button vt-client-paged-list--button-visible'][text()='Next'"));
}
Как правило, перед циклом назначьте переменную, которая будет содержать массив WebElements (даже если вы ожидаете только один). Затем для условия цикла while проверьте, есть ли еще хотя бы один из них. Если есть, делай все, что тебе нужно. Затем, в качестве последнего утверждения в цикле, переназначьте тестовую переменную, чтобы пересчитать количество экземпляров. Если его больше нет, цикл while пока безопасно говорит, что на странице его нет, и переходим к следующему фрагменту кода.
Ключ в том, что .findElement()
должен найти хотя бы один элемент, иначе он не работает. Plural .findElements()
по-прежнему работает, даже если нет элементов.