Дождитесь загрузки элемента при тестировании приложения 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")));