Selenium webdriver 显式等待webdriver在appium 1.7.2中不起作用

Selenium webdriver 显式等待webdriver在appium 1.7.2中不起作用,selenium-webdriver,appium,appium-android,webdriverwait,appium-desktop,Selenium Webdriver,Appium,Appium Android,Webdriverwait,Appium Desktop,我创建了一个实用程序类,其中我有: public void waitForScreenToLoad(AndroidDriver lDriver, WebElement element, int seconds){ WebDriverWait wait = new WebDriverWait(lDriver,seconds); wait.until(ExpectedConditions.visibilityOf(element)); } 我的主要登录类别有: @Test (pr

我创建了一个实用程序类,其中我有:

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是否可以使其正常工作?

单击并重新加载页面后,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);

WebElement对于不同的页面是唯一的。您在登录前在页面上找到了ele。然后登录“更改/重新加载”页面。而ele已经变得陈腐。因此,你不能以这种方式等待它。您应该使用另一个预期条件VisibilityofelementLocated。在locatorIMO中,您提到的是“不工作”而不是“实际失效”,这给实际问题蒙上了一层阴影。使用完整的错误堆栈跟踪更新问题,以便进行正确的分析。不工作是什么意思?Thread.sleepx将始终等待x秒,无论发生什么情况。另一方面,显式等待仅在元素不可见或您希望发生的任何其他情况下才会等待。如果元素在开始时已经可见,则显式等待不会再等待一秒钟。伙计们,thread.sleep可以工作,但由于这不是最佳实践,我想使用webdriver显式waitHi Alexey我尝试过使用它,但是How的错误方法AccessibilityDistring未定义该类型的方法,ok通过ele_locator=MobileBy.AccessibilityIdPB SMB更改它;删除错误,但屏幕截图仍不会在所需时间出现。Webdriver等待仍不工作