【问题标题】:Selenium WebDriver and InternetExplorerSelenium WebDriver 和 InternetExplorer
【发布时间】:2012-06-24 20:28:28
【问题描述】:

我最近更新到 Selenium 2.24.1 以使 Firefox 13 正常工作。通过此更新,您现在可以运行类似于 chromedriver.exe 的可执行文件,以便将事件分派到 IE。但是,我没有运气让测试与 IE 一起运行。为了让它与 chrome 一起运行,我显然还必须设置 webdriver.chrome.driver 位,但它和 Firefox 使用相同的代码可以正常工作。

这是我的源代码:

public class GoogleTest {

@Test
public void test() throws Exception {
  System.setProperty("webdriver.ie.driver", "IEDriverServer.exe");
  final WebDriver driver = new InternetExplorerDriver();
  driver.get("http://www.google.com");
  driver.findElement(By.name("q")).sendKeys("test");
  driver.findElement(By.name("q")).submit();
  driver.quit();
}

}

但是,在执行此测试时,我会看到此堆栈跟踪

org.openqa.selenium.NoSuchElementException: Unable to find element with name == q (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 395 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.24.1', revision: '17205', time: '2012-06-19 15:28:49'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_01'
Driver info: driver.version: RemoteWebDriver
Session ID: e20f8370-00ed-4bf6-a4fa-a0c09c2b6d8c
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:242)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:303)
at org.openqa.selenium.By$ByName.findElement(By.java:291)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:234)

【问题讨论】:

  • 这个确切的代码在 IE8 和 Windows XP SP3 32 位上运行良好。你在哪个 IE 和/或操作系统上?您绝对确定您使用的是最新的 IEDriverServer.exe 而不是旧的吗?它会打开谷歌页面吗?
  • 我使用的是 IE9 Windows 7。我昨天才从下载部分下载。我已经尝试过 64 位和 32 位版本的 IEDriverServer。 Google 页面打开得很好,但是一旦我尝试与驱动程序交互,就好像信息从未发送给驱动程序。
  • 好的。还有什么工作吗?说在包含单个输入的本地 html 页面上输入表单?或者......好吧,什么?
  • 嗯,现在我们到了某个地方。如果我在本地使用我的示例玩具 web 应用程序,我可以与事物交互,但是一旦我访问外部站点,事情就会失败(即使页面加载)。
  • @Slanec 你能告诉我 IEDriverServer 有什么用处吗?我使用 selenium-standalone-server 运行测试,它一直在工作

标签: java internet-explorer selenium selenium-webdriver


【解决方案1】:

这可能真的很明显,但是由于您在原始帖子中没有提及它并且您刚刚下载了驱动程序并且您的内部玩具应用程序正在运行,您是否仔细检查了 IE 中提到的 IEDriver 中的安全设置代码页:

在 IE 7 或更高版本的 Windows Vista 或 Windows 7 上,您必须将每个区域的保护模式设置设置为相同的值。该值可以打开或关闭,只要每个区域都相同。要设置保护模式设置,请从“工具”菜单中选择“Internet 选项...”,然后单击“安全”选项卡。对于每个区域,标签底部都有一个标记为“启用保护模式”的复选框。

如果您之前使用过 Selenium 的早期版本,您可能已经这样做了,但我认为值得检查以确保...

【讨论】:

  • 最后一组更新决定破坏这些设置,而 INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS 也没有做任何事情。
  • 谢谢,我忘记了这一步(使用与最初不同的 Windows VM)。我处于调试模式,webdriver 找不到任何东西,无法打印页面源代码,它所能做的就是打开页面。我被难住了。再次感谢!
  • 这不适用于我在 IE8 浏览器中。我启用和禁用“启用保护模式”然后尝试但我仍然在 Eclipse 中收到错误请检查我的代码pastebin.com/TBxhptUB
【解决方案2】:

好吧,至少在我的情况下,错误消息具有误导性。我的系统被系统管理员锁定为保护模式:关闭。所以我无法切换保护模式。然后我意识到系统有一个管理员用户,所以以管理员用户身份登录并尝试切换保护模式。它仍然被禁用。然后我在管理员用户帐户下运行 Selenium,一切正常。

因此,您可能需要以管理员权限登录才能运行 selenium。这个技巧对我有用。

【讨论】:

    【解决方案3】:

    使用下面的代码

    System.setProperty("webdriver.ie.driver", "E:\\Selenium\\workspace\\IEDriverServer.exe");
    WebDriver driver = new InternetExplorerDriver();
    

    【讨论】:

      【解决方案4】:

      检查您下载的 IEWebdriver 服务器。如果您使用的是 32 位 IE,请下载并使用 32 位 IEWebdriver。

      希望对您有所帮助。

      【讨论】:

        【解决方案5】:

        我遇到了非常相似的问题。 Internet选项中有一个设置需要打开才能使其工作。高级 > 设置 > 安全 > 允许活动内容在我的电脑上的文件中运行。

        选中此框后,我的 IE 测试按预期工作,可以找到元素并与浏览器交互。

        【讨论】:

          猜你喜欢
          • 2016-10-02
          • 1970-01-01
          • 2013-05-25
          • 2020-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多