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

时间:2017-05-17 16:08:58

标签: java selenium selenium-webdriver webdriver

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

  

预期条件失败:等待元素不再存在   可见:By.cssSelector:.modal-body(尝试6秒,500   MILLISECONDS间隔)       构建信息:版本:'3.4.0',修订版:'未知',时间:'未知'       系统信息:主机:'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       功能[{applicationCacheEnabled = false,rotate = false,mobileEmulationEnabled = false,networkConnectionEnabled = false,   铬= {chromedriverVersion = 2.29.461591   (62ebf098771772160f391d75e589dc567915b233),   userDataDir = C:\ Users \用户GI \应用程序数据\本地\温度\ 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,takesScreenshot = true,   javascriptEnabled = true,cssSelectorsEnabled = true,   unexpectedAlertBehaviour =}]       会议ID:eb353964f7b9bd515e527a795a111bc3

我的方法:

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

2 个答案:

答案 0 :(得分:2)

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

尝试以下:

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

答案 1 :(得分:0)

此方法没有任何问题,您可以正确使用它。 这个方法的代码(在C#上)是:

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

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