从WebDriver启动IE时获取“SessionNotFoundException”

时间:2013-02-18 12:57:31

标签: internet-explorer selenium webdriver selenium-webdriver

根据提到的Post,我了解到ignoreZoomSetting功能尚未在Internet Explorer驱动程序中运行。

所以,我手动将浏览器级别设置为100%,然后运行测试脚本,它按预期工作。

实际需要:

我只是想从我的代码中将浏览器缩放级别设置为100%。我试图通过使用java.awt.Robot类来实现这一点 代码已尝试

 Robot ignoreZoom = new Robot();
 ignoreZoom.keyPress(KeyEvent.VK_CONTROL);
 ignoreZoom.keyPress(KeyEvent.VK_0);
 ignoreZoom.keyRelease(KeyEvent.VK_CONTROL);

我通过手动将浏览器缩放级别设置为150%并从代码启动IE来检查这一点。

用于启动的代码

 DesiredCapabilities ieCapabilities = null;
 ieCapabilities = DesiredCapabilities.internetExplorer();
 driver = new InternetExplorerDriver(ieCapabilities);

以上代码打开IE,但同时它会在上面代码的third line处引发异常

org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 150%. It should be set to 100% (WARNING: The server did not provide any stacktrace information)

使用的版本:

Selenium服务器 - 2.28.0
操作系统 - Windows 7
IEDriverServer - 2.29.0(64位)
IE - 8.0(64位)

我只是想知道是否有可能从编码方设置缩放级别?
任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

这里有循环依赖。您希望使用java.awt.Robot类设置浏览器缩放级别,但这只能在 IE启动后完成。但是,除非在启动浏览器之前将浏览器缩放级别设置为100%,否则无法使用InternetExplorerDriver启动IE。你有两个选择。

首先,您可以设置在启动IE时忽略浏览器的缩放级别设置的功能。这将启动浏览器,然后让您使用Robot类在闲暇时设置缩放级别。我不推荐这种方法,因为如果因任何原因设置缩放级别失败,IE驱动程序将错误地计算元素的坐标,并且单击页面中的元素可能会失败。如果您无论如何都要忽略缩放级别,那么您可以执行以下操作:

DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability("ignoreZoomSetting", true);
WebDriver driver = new InternetExplorerDriver(caps);

第二种更正确的方法是简单地认识到,因为IE不支持每个实例配置文件(如Firefox和Chrome那样),所以在尝试使用自动化之前,IE只需要一些手动配置。的webdriver。其中手动配置是将浏览器缩放级别设置为100%。

您在原始问题中提到的邮件列表主题确实,实际上表明ignoreZoomSetting功能有效。声称它不适用于他们的海报试图不正当地使用它。