How To Capture Full Page Screenshot Using Selenium WebDriver
How to capture full page screenshot using Selenium WebDriver:
This post “how to capture full page screenshot using Selenium WebDriver” deals with the issue we are facing with the browsers which cant capture the full page screenshot due to viewport problem. Different WebDrivers take screenshots in different ways. Some WebDrivers provide a screenshot of the entire page while others handle the viewport only.
Earlier I have posted a detailed post on how to capture a screenshot of failed test cases using Selenium WebDriver. If you have missed it, you could check the detailed post on how to capture screenshot of failed test cases using Selenium WebDriver.
After Selenium 3 releases, most of us facing issues with Firefox Browser. To over come compatibility issues, we are using Gecko Driver.
Must See: Running Selenium Scripts using Gecko Driver.
Coming to this post on “how to capture full page screenshot in Selenium WebDriver”. Earlier (Selenium 2) we could get the full page screenshot in Selenium only when we use Firefox driver. For other browsers, selenium captures only the visible area of the web page. Coming to Selenium 3, we are unable to capture full page screenshot by using Firefox browser too.
Yes, in Selenium 3 capturing full page screenshot by using Firefox browser is not working like earlier.
How to overcome this issue to capture full page screenshot in Selenium WebDriver.
There is a workaround to overcome this issue. We need to get the help of a third party utility called ‘aShot’.
What is aShot?
aShot is a WebDriver Screenshot utility. It takes a screenshot of the WebElement on different platforms (i.e. desktop browsers, iOS Simulator Mobile Safari, Android Emulator Browser).
aShot might be configured to handle browsers with the viewport problem. This gives a screenshot of the entire page even for Chrome, Mobile Safari, etc
Check more on aShot here.
Here is the download link of aShot Jar file.
Add this jar file in to your project.
Note: Select Project and Right click on the Project – Go to ‘Build path’ – Go to ‘Configure build path’ – Click on ‘lib’ section – Add external jar
Below mentioned script shows how to capture full page screenshot using Selenium WebDriver:
package softwareTestingMaterial; import java.io.File; import javax.imageio.ImageIO; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.shooting.ShootingStrategies; public class FullPageScreenshot { public static void main(String args[]) throws Exception{ //Modify the path of the GeckoDriver in the below step based on your local system path System.setProperty("webdriver.gecko.driver","D://Selenium Environment//Drivers//geckodriver.exe"); // Instantiation of driver object. To launch Firefox browser WebDriver driver = new FirefoxDriver(); // To oepn URL "http://softwaretestingmaterial.com" driver.get("https://www.softwaretestingmaterial.com"); Thread.sleep(2000); Screenshot fpScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver); ImageIO.write(fpScreenshot.getImage(),"PNG",new File("D:///FullPageScreenshot.png")); } }
If you are not regular reader of my blog then I highly recommend you to sign up for the free email newsletter using the below link.
Subscribe and get a free eBook and regular updates from SoftwareTestingMaterial.com
Initially the ashot.jar captured entire screen both horizontally and vertically. Now, it captures vertical fully, but the horizontal width is captured only half . So i am not able to see the right half of the image captured using ashot.jar. Please help.