Selenium IE WebDriver: NoSuchElementException

本文关键字:NoSuchElementException WebDriver IE Selenium | 更新日期: 2023-09-27 18:36:40

我正在尝试开始使用Selenium Internet Explorer WebDriver,但是一旦我尝试在加载的页面中找到元素,它就会引发异常。

我正在使用Selenium客户端的.NET实现和2.44版本,Internet Explorer 11(我尝试过32位和64位版本)运行在Windows 8.1 x64机器上。

这是我正在使用的 C# 测试代码:

IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://mytesturl.com");
const string name = "Test";
IWebElement nameElement = driver.FindElement(By.Name("name"));
nameElement.SendKeys(name);
//...

这是我运行测试的网页:

<!DOCTYPE html>
<html>
<head runat="server">
    <meta name="viewport" content="width=device-width" />
    <title>TestSelenium</title>
</head>
<body>
    <div>
        <form action="<%: Url.Action("TestSeleniumFormResponse") %>" method="post">
            Insert name: <input name="name" type="text"/>
            <button type="submit">Submit</button>
        </form>
    </div>
</body>
</html>

异常在到达driver.FindElement(By.Name("name"))调用后立即引发。在此之前,执行将按预期工作(在实例化 Web 驱动程序并正确导航到 URL 时启动 IE)。

这是我得到的例外:

OpenQA.Selenium.NoSuchElementException : Unable to find element with name == name
   en OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   en OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   en OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   en OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByName(String name)
   en OpenQA.Selenium.By.<>c__DisplayClassa.<Name>b__8(ISearchContext context)
   en OpenQA.Selenium.By.FindElement(ISearchContext context)
   en OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)

我已经将IE中的所有安全区域设置为具有相同的保护模式设置(尝试启用和禁用所有),禁用增强保护模式,并已设置官方网站(https://code.google.com/p/selenium/wiki/InternetExplorerDriver)所需配置部分中指定的注册表项。我尝试显式等待长达 60 秒,以防在执行达到该点时未加载网页。没有运气。

感谢您的帮助。

Selenium IE WebDriver: NoSuchElementException

正如@JimEvans对该问题的评论所报道的那样,这是导致IE WebDriver无法正常工作的Windows更新。卸载更新KB3025390使 Web 驱动程序在 Internet Explorer 11 中正常工作。

我知道这远非最好的解决方案,但只要它有效(并且已经有关于此的错误报告),对我来说没问题。

我在没有任何解决方案的情况下坚持了 2 天。我在 2 台机器上尝试,结果是 1 台机器运行顺利,1 台机器不顺利。比较它们后,我发现我的错误是我的代码中缺少 1 行,因此无法获取元素 ID。试试这个:

[TestInitialize()]
     public void MyTestInitialize() {
         driver = new InternetExplorerDriver();
         driver.Manage().Window.Maximize();
     }

请注意线路司机。管理()。Window.Maximize();希望这个帮助!!:D

尝试以下操作:它禁用本机事件IE并在实例化浏览器后添加 10 秒implicit等待。而且,只是为了澄清浏览器缩放级别也应该是 100%。

var options = new InternetExplorerOptions{EnableNativeEvents = false};
IWebDriver driver = new InternetExplorerDriver(options);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
driver.Navigate().GoToUrl("http://mytesturl.com");
const string name = "Test";
IWebElement nameElement = driver.FindElement(By.XPath("//input[@name='name']"));
nameElement.SendKeys(name);
//...
相关文章:
  • 没有找到相关文章