1

I have used the code below to take the screenshot for a new window, but it is taking the screenshot for the previous window.

driver.findElement(By.xpath("html/body/div[2]/div[1]/div[1]/div[1]/a")).click();  
Thread.sleep(15000);
File scrFile18 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile18, new File("d:/Users/ Updates.png"));
Tom
  • 1,387
  • 3
  • 19
  • 30

3 Answers3

2
WebDriver driver;
driver=new FirefoxDriver();
driver.manage().window().maximize();//maximize
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);//wait
driver.get("http://www.dittotv.com/");//url
driver.findElement(By.xpath("//img[@alt='Windows']")).click();
String parentHandle = driver.getWindowHandle();

for (String winHandle : driver.getWindowHandles()) {
    driver.switchTo().window(winHandle); 
}
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("E:\\screenshot.jpg"));``
driver.close();
driver.switchTo().window(parentHandle);
0

You need to switch to the new window before taking screenshot. Please have a look at this stackoverflow answer

Community
  • 1
  • 1
Vikas Ojha
  • 6,742
  • 6
  • 22
  • 35
0

Check this

var webdriver = require('selenium-webdriver');
    var fs = require('fs');

    var driver = new webdriver.Builder().build();

    webdriver.WebDriver.prototype.saveScreenshot = function(filename) {
        return driver.takeScreenshot().then(function(data) {
            fs.writeFile(filename, data.replace(/^data:image\/png;base64,/,''), 'base64', function(err) {
                if(err) throw err;
            });
        })
    };


    // example usage
    driver.saveScreenshot('mypage.png');
Mathivanan
  • 371
  • 2
  • 16