【问题标题】:Selenium WebDriver, wait while displayed loading divSelenium WebDriver,等待显示加载div
【发布时间】:2015-06-11 22:50:15
【问题描述】:

起初:
- 带有 Webdriver 的 Selenium 2.0
- 适用于 IExplorer、Chrome 和 Firefox
- 当前的 Webdriver 和 Selenium dll
- 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 中运行。

【问题讨论】:

  • 您还应该显示相关的 HTML 以及如何使用参数调用 WaitWhileElementVisible。另外我不明白你为什么创建自定义的Exists 方法,参数IWebDriver _drv 根本没有使用。
  • _drv 是其他尝试的剩余部分。我曾使用 _drv.FindElement(_locator) 方法

标签: c# selenium


【解决方案1】:

您等待元素可见的方法是正确的。但是对您的代码稍作修改就可以解决问题。

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() 将忽略提供的异常类型。这段代码对我有用。

希望这能解决您的问题。

【讨论】:

  • 感谢您的快速答复。不幸的是,这并没有改变。我有一个错误:css 语法必须是 div#wartenDialog 而不是 div #wartenDialog,但我得到了相同的结果。我已经检测到 ExpectedConditions.ElementIsVisible(_locator) != null 方法总是返回 true。现在我使用 _drv.FindElement(_locator).GetCssValue("display") != "none" 表达式,它可以工作
  • 我已将表达式更改为 _drv.FindElement(_locator).Displayed;表达,它也有效。也许更好的语法
  • @Gamer2015 很高兴听到您解决了这个问题。如果您想忽略使用WebDriverWait 时发生的任何异常,您应该使用IgnoreExceptionTypes(在您的情况下是TimeoutException)。我使用Displayed 方法遇到了一个问题。如果 DOM 上不存在元素,FindElement 方法将抛出 NoSuchElement 异常。如果页面上存在元素,则它可以正常工作。在大多数情况下,我避免使用Displayed 方法。
猜你喜欢
  • 2012-07-07
  • 2013-12-03
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
相关资源
最近更新 更多