Подождите, пока элемент не будет существовать, используя AjaxElementLocatorFactory

#selenium

#selenium

Вопрос:

Я использую фабрику страниц и AjaxElementLocatorFactory в своем проекте selenium. Я хотел бы реализовать что-то вроде этого:

 @FindBy(className = "loading-container")
private WebElement loadingElement;

public LoadingPage(WebDriver driver) {
    AjaxElementLocatorFactory factory = new AjaxElementLocatorFactory(driver, 100);
    PageFactory.initElements(factory, this);
}

public void waitLoadingToFinish() {
    waitUntilElementDoesn'tExist(loadingElement);
}
  

Комментарии:

1. почему вы не можете использовать встроенное в selenium явное ожидание? Что-то вроде приведенного ниже: элемент WebElement = wait.until( ожидаемые условия.presenceOfElementLocated(By.id (элемент)));

2. Потому что я ищу решение с использованием AjaxElementLocatorFactory и page factory. Все мои веб-компоненты расширяют класс, который использует AjaxElementLocatorFactory, и я хотел бы сохранить его таким образом. presenceOfElementLocated принимает только локатор. Кроме того, я хочу дождаться исчезновения элемента из DOM.

3. Я не уверен, что существует какой-либо встроенный метод для ожидания исчезновения любого элемента, однако вы можете работать с комбинацией метода loop и IsElementVisible(), чтобы дождаться исчезновения элемента.

4. Проблема с AjaxElementLocatorFactory заключается в том, что каждый раз, когда я вызываю метод для элемента, он ожидает появления элемента. для примера что-то вроде этого element.isDisplayed() ожидает появления элемента (до истечения времени ожидания), а затем вызывает метод isDisplayed. итак, если элемент не существует, он ничего не ждет.