WebDriverWait将等待直到超时,即使成功

时间:2018-10-31 18:44:21

标签: c# selenium exception exception-handling nosuchelementexception

我为遇到的问题problem之以鼻。

我定义了以下方法:

private static void WaitSpinner(By locator)
{
    wait.Timeout = TimeSpan.FromSeconds(10);
    wait.PollingInterval = TimeSpan.FromMilliseconds(250);
    wait.Message = "El spinner ha tardado demasiado en desaparecer";

    wait.Until(driver =>
    {
        try
        {
            IWebElement spinner = driver.FindElement(locator);

            if (spinner.Displayed) { return false; }
            else { return true; }
        }
        catch (NoSuchElementException)
        {
            return true;
        }
    });
}

但是,发生了两件事,我不明白:

  1. 即使成功,方法也会一直等到超时
  2. NoSuchElementException将被报告给ExceptionThrown事件,即使该方法已捕获该事件。

我在做什么错了?

谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码似乎不错。确保您通过的定位器正确。

  1. 使用以下命令在chrome中打开开发工具

      

    CTRL + SHIFT + i

  2. 验证微调器的xpath(locator)与您传递的代码完全相同。

  3. 还可以在chrome dev工具中观察微调器的行为。隐藏xpath并再次出现时更改xpath。