Selenium-C#-Web驱动程序-找不到元素

本文关键字:元素 找不到 驱动程序 Selenium-C#-Web | 更新日期: 2023-09-27 17:58:29

在C#中使用selenium,我正试图打开浏览器,导航到谷歌并找到文本搜索字段。

我试试下面的

IWebDriver driver = new InternetExplorerDriver(@"C:'");
driver.Navigate().GoToUrl("www.google.com");
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
IWebElement password = driver.FindElement(By.Id("gbqfq"));

但是得到以下错误-

无法找到id==gbqfq的元素

Selenium-C#-Web驱动程序-找不到元素

这看起来像是已经回答的这个问题的副本。

我可以向你展示我所做的一切,这似乎对我很有效:

public static IWebElement WaitForElementToAppear(IWebDriver driver, int waitTime, By waitingElement)
{
        IWebElement wait = new WebDriverWait(driver, TimeSpan.FromSeconds(waitTime)).Until(ExpectedConditions.ElementExists(waitingElement));
        return wait;
}

这应该等待waitTime一段时间,直到找到或没有找到元素为止。我遇到了很多问题,动态页面没有立即加载我需要的元素,WebDriver试图以比页面加载更快的速度找到元素,这是我的解决方案。希望它能有所帮助!

您可以尝试使用旋转等待

int timeout =0;
while (driver.FindElements(By.id("gbqfq")).Count == 0 && timeout <500){
  Thread.sleep(1);
  timeout++;
 }
 IWebElement password = driver.FindElement(By.Id("gbqfq"));

这应该有助于确保元素实际上有时间出现。

还要注意,"gbqfq"id有点像气味。我可能会尝试一些比id更有意义的匹配。