Reputation: 29
I am learning selenium Webdriver. I was trying to take screenshot on chrome browser but I got exception for below code (Note: Same piece of code works on firefox). Kindly help me out to take a screenshot on Chrome and please somebody explain me why below code is not working on Chrome.
public class ScreenShot
{
public static void main(String[] args) throws IOException
{
String key = "webdriver.chrome.driver";
String value = "./driver/chromedriver.exe";
System.setProperty(key, value);
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.co.in");
TakesScreenshot screen = (TakesScreenshot) driver;
File srcFile = screen.getScreenshotAs(OutputType.FILE);
File destFile = new File("d:/google.png");
FileUtils.copyFile(srcFile, destFile);
}
}
Upvotes: 1
Views: 15197
Reputation: 1
In Django(Python), you can take the screenshots of Django Admin on headless Google Chrome as shown below. *I use pytest-django and selenium and my answer explains it more:
import pytest
from selenium import webdriver
def take_screenshot(driver, name):
os.makedirs(os.path.join("screenshot", os.path.dirname(name)), exist_ok=True)
driver.save_screenshot(os.path.join("screenshot", name))
def test_1(live_server):
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.set_window_size(1024, 768)
driver.get(("%s%s" % (live_server.url, "/admin/")))
take_screenshot(driver, "admin/chrome.png")
assert "Log in | Django site admin" in driver.title
Upvotes: 0
Reputation: 320
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
public static String captureScreenshot (WebDriver driver, String screenshotName){
try {
TakesScreenshot ts = (TakesScreenshot)driver;
File source = ts.getScreenshotAs(OutputType.FILE);
String dest = "/Users/CD6255ABQA/Desktop/Debug Images/" + screenshotName + ".png";
File destination = new File(dest);
FileUtils.copyFile(source, destination);
return dest;
}
catch (IOException e) {return e.getMessage();}
}
Call it using
String screenpath = captureScreenshot(driver, "ScreenshotName")
Remember to change the file destination in the method.
Upvotes: 2