#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. итак, если элемент не существует, он ничего не ждет.