Selenium/Java выходит из цикла while

Я добавляю кучу людей в список и хочу удалить их из списка позже. Я написал метод, который нажимает на стандартный элемент X, чтобы удалить пользователей. Моя проблема в том, что когда я попадаю в точку, где больше нет экземпляров элемента X, на которые можно нажать, я получаю сообщение об ошибке:

"[31morg.openqa.selenium.NoSuchElementException: невозможно найти элемент: {"method":"xpath","selector":"//div[3]/ul/li/div/div/img"} "

Но разве я не выхожу из цикла "Пока"? Когда element = null и, следовательно, условие ложно, разве цикл while не должен просто заканчиваться и не выводить сообщение об ошибке?

public class PrivacyList extends FluentPage {

@FindBy(xpath="//div[3]/ul/li/div/div/img") 
private FluentWebElement XIcon ;


public void removeUserFromlist(){

    while(XIcon!= null){            
            System.out.println("XICON is displayed");
            XIcon.click();
            System.out.println("XICON was clicked");
        }
    System.out.println("Users Removed");
}

}

Спасибо

2 ответа

PageFactory, используя @FindBy, оценивает WebElement лениво - это означает, что он используется впервые. После первого раза он не оценивается снова! Так что в вашем случае, если он найден в первый раз, он никогда не станет null, если вы не переоцениваете его каждый раз через цикл.

Вам придется использовать что-то еще, чтобы выйти из цикла. Возможно, количество //div[3]/ul/li элементы.

Оценка адреса Xpath вместо webElement решила эту проблему и стала простым выходом из цикла while.

while(driver.findElements(By.xpath("//div[3]/ul/li/div/div/img")).size()!=0)
Другие вопросы по тегам