使用Appium和Ruby测试iOS应用程序时,请等待元素加载



我正在测试一个iOS应用程序,登录后无法与元素交互,因为Appium运行得太快了。

有人能给我举一个使用WebDriverWait风格等待Appium iOS测试的例子吗?最好是Ruby。

谢谢。

这对我有效,但我是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编写的。虽然有点拖沓,但它会引导你了解它应该如何等待。它将花费以秒为单位的等待时间,然后每隔一秒检查一次元素是否存在。一旦它定位了元素,它就会确保它是可见的,以便可以与之交互。"driver"显然是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")));

最新更新