Дождитесь загрузки элемента при тестировании приложения iOS с помощью Appium и Ruby?

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

может ли кто-нибудь указать мне на пример использования стиля WebDriverWait ожидания тестирования Appium iOS? Желательно в Рубин.

спасибо.

4 ответов


это сработало для меня, но я новичок в Appium

#code that navigated to this page
wait = Selenium::WebDriver::Wait.new :timeout => 10
wait.until { @driver.find_element(:name, 'myElementName').displayed? }
#code that deals with myElementName

Я использую эту конструкцию, чтобы дождаться появления некоторого элемента:

wait_true { exists { find_element(:xpath, path_to_element) } }

конечно, вы можете найти не только :xpath.

также вы можете установить тайм-аут:

wait_true(timeout) { exists { find_element(:xpath, path_to_element) } }

вот тот, который я придумал, но на java. Немного растянутый, но он проведет вас через то, как он должен ждать. Это займет время ожидания в секундах, а затем каждую секунду проверяет, присутствует ли элемент. Как только он обнаружил элемент, он гарантирует, что он виден, чтобы с ним можно было взаимодействовать. "драйвер", очевидно, является объектом WebDriver.

public void waitForVisible(final By by, int waitTime) {
    wait = new WebDriverWait(driver, timeoutInSeconds);
    for (int attempt = 0; attempt < waitTime; attempt++) {
        try {
            driver.findElement(by);
            break;
        } catch (Exception e) {
            driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
        }
    }
    wait.until(ExpectedConditions.visibilityOfElementLocated(by));
}

Я использую эти решения в appium java:

  • Thread.sleep(1000);

  • WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.elementToBeClickable(By.name("somename")));