Selenium WebDriver和InternetExplorer

我最近更新到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) 

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

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

如果你之前使用的是以前版本的Selenium,你可能已经这样做了,但我认为值得检查以确保……

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

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

使用以下代码

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

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

希望有所帮助。

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

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