getScreenshotAs()1. Take a screenshot with Selenium WebDriver (localhost machine):
[code language="java" gutter="true"]@Test
public void saveScreenShotTest(){
// Create FireFox driver instance.
// It's possible to create any browser instance you want e.g:
// InternetExplorerDriver InternetExplorerDriver = new InternetExplorerDriver();
FirefoxDriver firefoxDriver = new FirefoxDriver();
// start browser and open "http://www.skillim.com" page
firefoxDriver.navigate().to("http://www.skillim.com");
// FireFox driver and other drivers implement TakesScreenshot interface
// it means all of them they have getScreenshotAs() method
File screenShotFile = firefoxDriver.getScreenshotAs(OutputType.FILE);
// Our screenShotFile will be created somewhere in a system in a temp folder,
// but we need to move it in our project folder and give it a name
screenShotFile.renameTo(new File("screenshot.png").getAbsoluteFile());
// close browser
firefoxDriver.quit();
}[/code]
After script execution you will see new screenshot.png file in your project tree
P.S. If You have faced with exception like:
[code language="java"]org.openqa.selenium.WebDriverException:
Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA
Build info: version: '2.29.0', revision: '58258c3', time: '2013-01-17 22:46:35'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1',
java.version: '1.6.0_20' Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.Executable.(Executable.java:69)
at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:59)
at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:55)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:92)
at test.MakeScreenShotTest.saveScreenShotTest(MakeScreenShotTest.java:22)[/code]
Try to change line:
[code language="java" firstline="7" gutter="true" tabsize="4"]FirefoxDriver firefoxDriver = new FirefoxDriver();[/code]
to line:
[code language="java" firstline="7" gutter="true"]FirefoxDriver firefoxDriver = new FirefoxDriver(new FirefoxBinary
(new File("c:\\Program Files\\Mozilla Firefox18\\firefox.exe")),new FirefoxProfile());[/code]
c:\\Program Files\\Mozilla Firefox18\\firefox.exe - path to firefox.exe file on your machine
2. Take a screenshot using Selenium/WebDriver from remote server:
Unfortunately, first example will not work, if you run tests remotely on a server using 'RemoteWebDriver':
In such case you can make screenshot in this way:
[code language="java" gutter="true" tabsize="4"]@Test
public void saveScreenShotTestFromRemoteMachine(){
WebDriver remoteWebDriver = null;
try{
remoteWebDriver=new RemoteWebDriver(new URL("http://192.168.111.105:4444/wd/hub"), new DesiredCapabilities());
}catch (MalformedURLException e) {
e.printStackTrace();
}
remoteWebDriver.navigate().to("http://www.skillim.com");
File screenShotFile=((TakesScreenshot)(new Augmenter().augment(remoteWebDriver))).getScreenshotAs(OutputType.FILE);
// Our screenShotFile will be created somewhere in a system in a temp folder, but we need to
// move it in our project folder and give it a name
screenShotFile.renameTo(new File("remoteWebDriverScreenShot.png").getAbsoluteFile());
// close browser in the end
remoteWebDriver.close();
}[/code]
We used
Augmenter class to get WebDriver object, since RemoteWebDriver doesn't implement TakesScreenshot interface - it means we coulnd't cast RemoteWebDriver to TakesScreenshot and use it's getScreenshotAs() method.New remoteWebDriverScreenShot.png file will appear in a project tree.
No comments:
Post a Comment