尝试使用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和浏览器所拥有的通信。如果有任何方法可以重新建立可能有效的连接。
答案 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();