Метод Java Wrapper для ожидания доступа к элементу для приложения, управляемого Apache Cordova Webview

Для мобильного приложения с несколькими веб-представлениями (приложение iOS, созданное с использованием Cordova, PhoneGap, XCode), я создал метод ниже, чтобы проверить, присутствует ли элемент. Просьба предложить, если ниже фрагмент имеет смысл? поскольку традиционные функции-обертки, основанные на традиционных явных ожиданиях, не работают надежно.

    public boolean waitForElemToBeAvailable(final By by, final int timeout, int retries) {
    WebDriverWait wait = new WebDriverWait(appiumDriver, timeout);
    boolean success = false;
    final long waitSlice = timeout/retries;

    if(retries>0){
        List<WebElement> elements = appiumDriver.findElements(by);
        if(elements.size()>0){
            success = true;
            return success;
        }else {
            appiumDriver.manage().timeouts().implicitlyWait(waitSlice, TimeUnit.SECONDS);
            retries--;
        }
    }
    return success;
}

Спасибо

1 ответ

Решение

Согласно блоку кода, которым вы поделились, я не вижу никакого добавления значения, чтобы проверить, присутствует ли элемент через implicitlyWait, Реализация выглядит как чистые накладные расходы. Вместо этого, если вы загляните в Java Docs ExpectedCondition Interface из пакета org.openqa.selenium.support.ui, который моделирует условие, которое может ожидаться для оценки чего-то, что не является нулевым или ложным, также содержит класс ExpectedConditions, который можно вызвать в цикле с помощью класса WebDriverWait и методов обеспечивает более детальный подход, чтобы подтвердить, достигнуто ли определенное условие или нет. Это дает нам гораздо больше гибкости в выборе желаемого поведения WebElement. Некоторые из широко используемых методов:

  • Наличие элемента:

    presenceOfElementLocated(By locator)
    
  • Видимость элемента:

    visibilityOfElementLocated(By locator)
    
  • Интерактивность элемента:

    elementToBeClickable(By locator)
    

Примечание: согласно документации не смешивайте неявные и явные ожидания. Это может привести к непредсказуемому времени ожидания.

Другие вопросы по тегам