Existing code which takes screenshot of only visible screen. I am using the Chromedriver
.
System.setProperty("webdriver.chrome.driver", "D:/chromedriver/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.bbc.com");
driver.manage().window().maximize();
System.out.println(driver.getTitle());
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("D:/chromedriver/scr3.png"));
driver.close();
How do I take a scrolling screenshot on Android? On Android 11 or later, press the power and volume down buttons at the same time. Then, tab the “capture more” option at the bottom left corner of the screen.
takeScreenshot(driver); Here 1000 is scrolled out time in milliseconds, so for taking a screenshot, the program will scroll for each 1000 msec. Step 2): Now, get the image from the screenshot and write it to the file. You can provide the file type as jpg, png, etc.
We use java.It provides method like createScreenCapture which captures the current screen. This method returns captured image as BufferedImage object which can be saved as a file. It also uses ImageIO to save it as PNG image format.
Please Find the below code, you can scroll and take screenshots as many as you want. Note the elements
Webelement. Store them and scroll relatively.
You can Scroll depending upon how many screenshots you want.
driver.get("http://www.bbc.com");
driver.manage().window().maximize();
System.out.println(driver.getTitle());
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("D:/chromedriver/scr3.png"));
WebElement elements = driver.findElement(By.xpath(".//*[@id='page']/section[6]/div/div/div[1]/ul/li[3]/div/div[2]/h3/a"));
Thread.sleep(3000L);
JavascriptExecutor js = (JavascriptExecutor) driver;
int yPosition = elements.getLocation().getY();
js.executeScript("window.scroll (0, " + yPosition + ") ");
Thread.sleep(3000L);
File scrFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile1, new File("D:/chromedriver/scr4.png"));
driver.close();
You can't do this using merely selenium. You need other tool to perform your task. Follow the link and see my answer: Screen shot issue in selenium webdriver
Hope, it may help you.
To take screenshot of a complete webpage, we have to use a third party utility called 'aShot'. aShot is a WebDriver Schreenshot Utility with which we can take screenshot of the entire webpage & also individual WebElement. To do this, we have to download the aShot jar file & add to our project along with Selenium jar files.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With