Selenium-C#-Webdriver-找不到元素

Selenium-C#-Webdriver-找不到元素,c#,selenium,selenium-webdriver,webdriver,C#,Selenium,Selenium Webdriver,Webdriver,在C#中使用selenium,我试图打开浏览器,导航到Google并找到文本搜索字段 我尝试下面的方法 IWebDriver driver = new InternetExplorerDriver(@"C:\"); driver.Navigate().GoToUrl("www.google.com"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement password = dri

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

我尝试下面的方法

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的元素。您可以尝试使用旋转等待

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

 }
 IWebElement password = driver.FindElement(By.Id("gbqfq"));
int timeout=0;
while(driver.findelelements(By.id(“gbqfq”)).Count==0&&timeout这看起来像是一个已经应答的副本

我可以向您展示我所做的工作,这对我来说似乎很有效:

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

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

您使用的是什么版本的Internet Exploreru使用?Selenium Web Driver对IE 11的支持存在一些已知问题。此外,我真诚的建议是使用除Google以外的任何其他网页。不幸的是,大多数人选择Google作为Selenium工作的“启动应用程序”,但它是迄今为止,你会遇到的最复杂的网站之一(即标记是地狱,并且被大量最小化)-在使用谷歌网站时,你会遇到其他人不会遇到的问题。省去你的麻烦吧!你可能已经检查过了——但该ID不是动态生成的,对吧?如果是这样,那么该ID将不是找到元素的可靠方法……可能的重复只是对
We的重新实现bDriverWait
。此外,
计数
应替换为
任何