Java 无法拍摄正确窗口的屏幕截图

Java 无法拍摄正确窗口的屏幕截图,java,selenium-webdriver,automation,testng,Java,Selenium Webdriver,Automation,Testng,这段代码是用于截图捕获的,但是这段代码没有得到理想的输出。我无法拍摄正确窗口的截图。我的代码初始化了一个新的Chrome驱动程序,但没有得到该窗口的屏幕截图,这正是我所需要的 /----------------------------------take screenshot class--------------------------------/ public class ScreenCapture { SendMailUsingAuthentication SMU

这段代码是用于截图捕获的,但是这段代码没有得到理想的输出。我无法拍摄正确窗口的截图。我的代码初始化了一个新的Chrome驱动程序,但没有得到该窗口的屏幕截图,这正是我所需要的

/----------------------------------take screenshot class--------------------------------/        
public class ScreenCapture {
    SendMailUsingAuthentication SMUA = new SendMailUsingAuthentication ();

        public void takeScreenShot() throws IOException, MessagingException   {
            String timeStamp;
            File screenShotName;
            WebDriver driver = new ChromeDriver();
                File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                //The below method will save the screen shot in d drive with name "screenshot.png"
                timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); 
                screenShotName = new File("D:\\Manzelinc\\SNST_test_Auto\\Manzel"+timeStamp+".png");
                try {
                    FileUtils.copyFile(scrFile, screenShotName);
                    SMUA.postMail(SendMailUsingAuthentication.emailList, SendMailUsingAuthentication.emailSubjectTxt, SendMailUsingAuthentication.emailMsgTxt, SendMailUsingAuthentication.emailFromAddress);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } 

/----------------------------Listener class---------------------------------------------------------/
public class ReportGeneration implements ITestListener, IReporter  {
WebDriver driver;
SendMailUsingAuthentication SMUA = new SendMailUsingAuthentication ();

public void onStart(ITestContext arg0) {
     System.out.println("Start Of Execution(TEST)->"+arg0.getName());
}
public void onTestStart(ITestResult arg0) {
    System.out.println("Test Started->"+arg0.getName());
}
public void onTestSuccess(ITestResult arg0) {
    System.out.println("Test Pass->"+arg0.getName());
}
public void onTestFailure(ITestResult arg0) {
    System.out.println("Test Failed->"+arg0.getName());
    //take Screenshot------------------------
    ScreenCapture SC = new ScreenCapture();
        try {
            SC.takeScreenShot();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    Reporter.log("<br> <img src=.\\screenshots\\Untitled.png /> <br>");
    Reporter.setCurrentTestResult(null);
}   
/------------------------------------截图类-----------------/
公共类截图{
SendMailUsingAuthentication SMUA=新的SendMailUsingAuthentication();
public void takeScreenShot()抛出IOException、MessaginException{
字符串时间戳;
文件截图名称;
WebDriver驱动程序=新的ChromeDriver();
文件scrFile=((TakesScreenshot)driver.getScreenshotAs(OutputType.File);
//下面的方法将屏幕截图保存在名为“screenshot.png”的d驱动器中
时间戳=新的SimpleDataFormat(“yyyyMMdd_HHmmss”).format(Calendar.getInstance().getTime());
screenShotName=新文件(“D:\\Manzelinc\\SNST\u test\u Auto\\Manzel”+时间戳+“.png”);
试一试{
copyFile(scrFile,screenShotName);
SMUA.postMail(SendMailUsingAuthentication.emailList、SendMailUsingAuthentication.emailSubjectTxt、SendMailUsingAuthentication.emailMsgTxt、SendMailUsingAuthentication.emailFromAddress);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
} 
/----------------------------侦听器类---------------------------------------------------------/
公共类ReportGeneration实现ITestListener、IReporter{
网络驱动程序;
SendMailUsingAuthentication SMUA=新的SendMailUsingAuthentication();
公共void onStart(ITestContext arg0){
System.out.println(“开始执行(测试)->”+arg0.getName());
}
公共void onTestStart(ITestResult arg0){
System.out.println(“测试已启动->”+arg0.getName());
}
public void onTestSuccess(ITestResult arg0){
System.out.println(“测试通过->”+arg0.getName());
}
公共void onTestFailure(ITestResult arg0){
System.out.println(“测试失败->”+arg0.getName());
//截图------------------------
ScreenCapture SC=新屏幕捕获();
试一试{
SC.截图();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(消息异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Reporter.log(“

”); Reporter.setCurrentTestResult(空); }
您正在使用
WebDriver driver=new ChromeDriver();
创建一个新的驱动程序。您需要使用用于实际测试的驱动程序。您应该将驱动程序传递给
takeScreenShot()
方法,而不是创建新的WebDriver实例或将驱动程序设置为静态。整个项目中应该只有一个WebDriver实例。