IE屏幕上的Selenium冻结。解冻可能吗?

时间:2016-03-28 17:47:03

标签: internet-explorer selenium screenshot

尝试使用selenium和32位IE驱动程序截取屏幕截图时遇到问题。

我测试的页面仅适用于IE,我使用32位驱动程序,因为64驱动程序太慢。

我遇到的问题是,在某些太长的页面中,这会导致屏幕截图失败,或者只是占用页面的一部分而另一部分是黑色的。这不是问题,如果selenium没有采取屏幕截图IE停止响应,需要恢复。当发生这种情况时,驱动程序(显然)找不到任何元素,我的测试用例失败。

我正在做类似的事情:

try{
    Screnshot ss = ((ITakeScreenshot)driver).GetScreenshot();
    ss.SaveAdFile("path", ImageFormat.Png);
}catch{
    Log.Error("And Error happened");
}  

所以我不担心屏幕截图是否正常,我的问题是如果它失败了我无法继续测试用例。有没有办法解冻探险家?或者确保屏幕截图没有失败(我更喜欢在屏幕截图中看到黑色,因为页面截图太大而导致我的测试失败)

P.S我尝试使用driver.Dispose(),即使这有效(解冻浏览器)它会杀死Selenium和浏览器所拥有的通信。如果有任何方法可以重新建立可能有效的连接。

1 个答案:

答案 0 :(得分:1)

我会截取视口的屏幕截图而不是整页。它会更快更稳定:

DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability("ie.enableFullPageScreenshot", false);

WebDriver driver = new InternetExplorerDriver(caps);
driver.get("http://stackoverflow.com/");

File file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

driver.quit();