Webdriver - IE在截图时闪烁

时间:2014-06-05 10:41:43

标签: java internet-explorer selenium selenium-webdriver webdriver

我在浏览IE浏览器时遇到闪烁问题,我在互联网上搜索过,但没有找到解决此问题的方法。

我找到了这个替代解决方案,用于获取测试步骤的屏幕截图。

我没有使用webdriver API来截取屏幕截图,而是依靠Java Robot API来截取屏幕截图。

我使用以下代码在IE中截取屏幕截图而没有任何闪烁。

public static boolean TakeScreenshot(String filePath){
boolean b = false;
try {
    BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

    b = ImageIO.write(image, "png", new File(filePath));            

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
return b;

}

对于Internet Explorer中的这个闪烁问题,webdriver API是否有任何解决方案?

1 个答案:

答案 0 :(得分:4)

我很惊讶你没有在网上找到任何对此的引用。至少有一个blog post通过提及它,source code始终会告诉你它到底在做什么。

"闪烁"你描述的可能是由于IE驱动程序操纵IE窗口截取屏幕的方式。在WebDriver API中,应该截取页面的完整DOM。 IE驱动程序使用Windows PrintWindow API来截取屏幕截图。但是,获取整个DOM的屏幕截图的唯一方法是在拍摄屏幕截图之前调整IE浏览器窗口的大小以显示整个DOM。然后驱动程序恢复以前的窗口大小。此窗口调整大小似乎导致"闪烁"。由于Firefox和Chrome驱动程序使用根本不同的方式来生成屏幕截图(IE驱动程序因后者的体系结构而无法使用的方法),因此它们不会出现此行为。