Selenium 即使有显式等待也会抛出 NoSuchElementException

Selenium throws NoSuchElementException even with explicit wait

我正在尝试使用 Selenium 自动执行一些 Web 测试。我写了一个登录网站的方法(见下文LoginToSite)。

public async Task<bool> CanUserLogin()
{
    var driver = new FirefoxDriver(_config["driverPath"]);

    LoginToSite(driver);

    //unrelated stuff, removed for brevity
}

public void LoginToSite(IWebDriver driver)
{
    driver.Navigate().GoToUrl(_config["siteUrl"]);

    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    var result = wait.Until(x => x.FindElement(By.Name("name")));
    Console.WriteLine(result.Size);
}

当我尝试使用 x => x.FindElement(By.Name("name")):

时,Selenium 抛出这个异常
OpenQA.Selenium.NoSuchElementException: Unable to locate element: *[name ="name"]
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   at OpenQA.Selenium.By.<>c__DisplayClass24_0.<Name>b__0(ISearchContext context)
   at OpenQA.Selenium.By.FindElement(ISearchContext context)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
   at REDACTED
   at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition, CancellationToken token)

我已经按照 selenium documentation on WebDriverWait 中的示例进行操作,但找不到失败的任何其他原因。

当 Web 驱动程序打开时,我可以打开控制台并键入 document.getElementsByName("name")[0],其中 returns 元素是正确的。

页面加载不到一秒钟,我找不到任何其他元素(例如,相同的代码在按 ID 检索元素时抛出相同的异常)。

任何帮助将不胜感激,谢谢!

尝试使用隐式等待

driver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 0, 7);