使用Appium和Ruby测试iOS应用程序时是否等待加载元素?

Aar*_*ver 9 ruby ios appium

我正在测试iOS应用程序,登录后无法与元素交互,因为Appium过快.

有人可以指点一个使用WebDriverWait样式等待Appium iOS测试的例子吗?最好是在Ruby中.

谢谢.

小智 13

这对我有用,但我是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
Run Code Online (Sandbox Code Playgroud)


Dmi*_*try 6

我使用这种结构等待出现一些元素:

wait_true { exists { find_element(:xpath, path_to_element) } }
Run Code Online (Sandbox Code Playgroud)

当然,你不仅可以找到:xpath.

你也可以设置超时:

wait_true(timeout) { exists { find_element(:xpath, path_to_element) } }
Run Code Online (Sandbox Code Playgroud)


plo*_*sco 5

这是我提出的那个,但在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));
}
Run Code Online (Sandbox Code Playgroud)