Selenium – C# – Webdriver – 无法找到元素

在C#中使用selen我正在尝试打开浏览器,导航到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的元素

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

我可以告诉你我做了什么,这似乎对我有用:

 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有点气味。 我可能会尝试一些比那个更有意义的匹配。