任何人都可以在Selenium中解释截图吗?

时间:2014-02-19 10:33:19

标签: java selenium selenium-webdriver

WebDriver driver = new FirefoxDriver();

driver.get("http://www.google.com/");

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

// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

可以告诉我那个

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE) 

getScreenShotAsTakesScreenshot界面中的方法......

(TakesScreenshot)driver,它指的是什么?你能解释一下吗?

2 个答案:

答案 0 :(得分:13)

WebDriver界面不包含getScreenshotAs()方法,因为可能让网络驱动程序无法截取屏幕截图 - 例如内存驱动程序无法呈现页面完全像HtmlUnitDriver

为了获得该方法,驱动程序必须实现TakesScreenshot接口,这使得它能够......好...截取屏幕截图。

因此,您必须以某种方式告诉程序您想截取屏幕截图,并且您绝对相信您可以这样做。这就是(TakesScreenshot)driver部分的用途。在Java中,它被称为casting,它实际上转换为"我知道这个driver实例能够截取屏幕截图,请将其转换为{{1输入。"

如果你的演员成功,一切都很好,TakesScreenshot对象将在运行时被转换为driver的实例。但是,如果您的演员失败,您将在运行时获得ClassCastExcepion

一些例子:

TakesScreenshot

答案 1 :(得分:3)

您可能会看到here,表示该驱动程序可以截取屏幕截图。有必要进行转换,因为 WebDriver 接口不包含 getScreenshotAs 方法,尽管它是由实现该接口的大多数类实现的,如 FirefoxDriver < / em>的