Явное ожидание webdriver не работает в appium 1.7.2

Я создал служебный класс, где у меня есть:

public void waitForScreenToLoad(AndroidDriver  lDriver, WebElement element, int seconds){
    WebDriverWait wait = new WebDriverWait(lDriver,seconds);
    wait.until(ExpectedConditions.visibilityOf(element));
}

и мой основной класс входа имеет:

@Test (priority = 0)
public void SignIn() throws InterruptedException, IOException {
    Thread.sleep(8000);
    MobileElement ele = (MobileElement) driver.findElementByAccessibilityId("abcde");
    MobileElement sign = (MobileElement) driver.findElementByAccessibilityId("Sign in");
    sign.click();
    // Thread.sleep(8000);
    waitForScreenToLoad(driver, ele, 120);
    captureScreenshot(driver,folder_name,df);   
    Thread.sleep(2000);
}

Они оба в одной упаковке. Элемент ele присутствует на обеих страницах до и после входа в систему. Ожидание не работает, но, если я использую Thread.sleep это работает, и я могу сделать скриншот.

Кто-нибудь может сказать мне, что не так с моим кодом? или если используете Thread.sleep так часто можно заставить это работать?

1 ответ

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

public void waitForScreenToLoad(AndroidDriver  lDriver, By locator, int seconds)
        {

                WebDriverWait wait = new WebDriverWait(lDriver,seconds);
                wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
          }


@Test (priority = 0)
  public void SignIn() throws InterruptedException, IOException {
            Thread.sleep(8000);
            //MobileElement ele = (MobileElement) driver.findElementByAccessibilityId("abcde");
            By ele_locator = By.AccessibilityId("abcde");
            MobileElement sign = (MobileElement) driver.findElementByAccessibilityId("Sign in");
            sign.click();
           // Thread.sleep(8000);
            waitForScreenToLoad(driver, ele_locator, 120);
            captureScreenshot(driver,folder_name,df);   
            Thread.sleep(2000);
Другие вопросы по тегам