0

根据提到的帖子,我了解到该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 位)

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

4

1 回答 1

2

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

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

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

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

实际上,您在原始问题中提到的邮件列表线程确实声明该ignoreZoomSetting功能有效。声称它对他们不起作用的海报试图不当使用它。

于 2013-02-18T14:56:19.350 回答