Selenium WebDriver,等待显示加载div

时间:2015-04-07 10:58:23

标签: c# selenium

起初:
  - 带有Webdriver的Selenium 2.0   - 适用于IExplorer,Chrome和Firefox
  - 当前的Webdriver和Selenium dll' s   - Windows 8.1
  - Visual Studio 2013 C#

我会测试我的网站。页面将加载ajax。如果我要更改页面,它将显示一个加载div(div #wartenDialog)。现在我会在显示这个div之前等待,然后再转到下一页。

问题是,有时会出现一个小的延迟,直到显示加载div和快速计算机/互联网没有加载div。

我尝试过这个功能:

public static void WaitWhileElementVisible(RemoteWebDriver _driver, By _locator)
{
  WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromMilliseconds(timeout));
  wait.Until(drv => !Exists(drv, _locator));
}

private static bool Exists(IWebDriver _drv, By _locator)
{
  return (ExpectedConditions.ElementIsVisible(_locator) != null);
}

现在它总是在Timeout中运行。

1 个答案:

答案 0 :(得分:0)

等待元素可见的方法是正确的。但是对代码进行一些修改就可以了。

public static void WaitWhileElementVisible(RemoteWebDriver _driver, By _locator)
{
    WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromMilliseconds(timeout));
    wait.IgnoreExceptionTypes(typeof(WebDriverTimeoutException));
    wait.Until(drv => !Exists(drv, _locator));
}

IgnoreExceptionTypes()将忽略提供的异常类型。这段代码对我有用。

希望这可以解决您的问题。