Cha*_*Gan 8 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"));
Run Code Online (Sandbox Code Playgroud)
可以告诉我的
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE)
Run Code Online (Sandbox Code Playgroud)
getScreenShotAs
TakesScreenshot
界面中的方法......
(TakesScreenshot)driver
,它指的是什么?你能解释一下吗?
Pet*_*ček 13
该WebDriver
接口不包含该getScreenshotAs()
方法,因为可能有一个webdriver无法截取屏幕截图 - 例如内存驱动程序根本不呈现页面,例如HtmlUnitDriver
.
为了获得该方法,驱动程序必须实现TakesScreenshot
接口,使其能够......好...截取屏幕截图.
因此,您必须以某种方式告诉程序您想截取屏幕截图,并且您绝对相信您可以这样做.这就是这个(TakesScreenshot)driver
部分的用途.在Java中,它被称为强制转换,它实际上转换为"我知道这个driver
实例能够截取屏幕截图,请将其转换为TakesScreenshot
类型".
如果你的演员成功,一切都很好,driver
对象将在运行时转换为一个实例TakesScreenshot
.但是,如果您的演员表失败,那么您将获得一个ClassCastExcepion
运行时.
一些例子:
// We already know this is ok, because FirefoxDriver implements (IS-A) TakesScreenshot.
WebDriver driver = new FirefoxDriver();
TakesScreenshot screenshottingDriver = (TakesScreenshot)driver;
// This will fail at run-time, because HtmlUnitDriver does not implement TakesScreenshot;
WebDriver driver = new HtmlUnitDriver();
TakesScreenshot screenshottingDriver = (TakesScreenshot)driver;
// You can use the `instanceof` operator to check:
if (driver instanceof TakesScreenshot) {
// we can be sure we can take screenshots, the cast will be safe
((TakesScreenshot)driver).getScreenshotAs(...);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14571 次 |
最近记录: |