首页 文章

Webdriver预期条件失败:等待元素不再是visiblr

提问于
浏览
0

我有一个等待css(模态)定位器在屏幕上不可见的方法,在我的一些构建中我得到以下失败的消息

预期条件失败:等待元素不再可见:By.cssSelector:.modal-body(尝试6秒,间隔500 MILLISECONDS)构建信息:版本:'3.4.0',修订版:'未知',time:'unknown'系统信息:主机:'DEV007',ip:'172.16.2.192',os.name:'Windows Server 2008 R2',os.arch:'amd64',os.version:'6.1' ,java.version:'1.8.0_131'驱动程序信息:org.openqa.selenium.chrome.ChromeDriver Capabilities [{applicationCacheEnabled = false,rotate = false,mobileEmulationEnabled = false,networkConnectionEnabled = false,chrome = {chromedriverVersion = 2.29.461591( 62ebf098771772160f391d75e589dc567915b233),userDataDir = C:\ Users \ GI \ AppData \ Local \ Temp \ 2 \ scoped_dir7780_13017},takesHeapSnapshot = true,pageLoadStrategy = normal,databaseEnabled = false,handlesAlerts = true,hasTouchScreen = false,version = 58.0.3029.110,platform = XP,browserConnectionEnabled = false,nativeEvents = true,acceptSslCerts = true,locationContextEnabled = true,webStorageEnabled = true,browserName = chrome,take sScreenshot = true,javascriptEnabled = true,cssSelectorsEnabled = true,unexpectedAlertBehaviour =}]会话ID:eb353964f7b9bd515e527a795a111bc3

我的方法:

public boolean waitUntilModalDisapears() {
    return this.wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".modal-body")));
}

2 回答

  • 0

    每次运行代码时,在页面中加载Web元素都会有所不同,因此您应该增加Web驱动程序中的等待时间,并尝试多次运行代码以确保驱动程序有足够的时间来加载元素

    尝试以下:

    WebDriverWait wait = new WebDriverWait(driver, 40);
     wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".modal-body")));
    
  • 2

    这种方法没有错,你正确使用它 . 这个方法的代码(在C#上)是:

    return (Func<IWebDriver, bool>) (driver =>
    {
    try
    {
      return !driver.FindElement(locator).Displayed;
    }
    catch (NoSuchElementException ex)
    {
      return true;
    }
    catch (StaleElementReferenceException ex)
    {
      return true;
    }
    });
    

    所以可能你的元素确实可见 . 尝试增加你的超时时间,也许是为了查看无法查看真实数据的屏幕截图,以及确定该元素是否可见 .

相关问题