appium selenium中的java代码截图

appium selenium中的java代码截图,java,android,appium,Java,Android,Appium,谁能告诉我AndroidDriver的截图代码应该是什么。我正在使用下面的代码,对于突出显示的行,我将获得Java空指针异常 驱动程序是一个AndroidDriver驱动程序;扩展到这个类 public void onTestFailure(ITestResult result) { // TODO Auto-generated method stub if(!result.isSuccess()){ Calendar calendar = Calendar.

谁能告诉我AndroidDriver的截图代码应该是什么。我正在使用下面的代码,对于突出显示的行,我将获得Java空指针异常

驱动程序是一个AndroidDriver驱动程序;扩展到这个类

public void onTestFailure(ITestResult result) {
    // TODO Auto-generated method stub


    if(!result.isSuccess()){
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");

        String methodName = result.getName();


        ****File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);****
        try {
            String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "\\src\\test\\java\\com\\automation\\mobile\\app\\android\\";
            File destFile = new File((String) reportDirectory + "/failure_screenshots/" + methodName + "_" + formater.format(calendar.getTime()) + ".png");

            FileUtils.copyFile(scrFile, destFile);

            Reporter.log("<a href='" + destFile.getAbsolutePath() + "'> <img src='" + destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public void onTestFailure(ITestResult结果){
//TODO自动生成的方法存根
如果(!result.issucess()){
日历=Calendar.getInstance();
SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd_-MM_-yyy_-hh_-MM_-ss”);
String methodName=result.getName();
****文件scrFile=((TakesScreenshot)driver.getScreenshotAs(OutputType.File)****
试一试{
String reportDirectory=新文件(System.getProperty(“user.dir”)).getAbsolutePath()+“\\src\\test\\java\\com\\automation\\mobile\\app\\android\\”;
File destFile=new File((String)reportDirectory+”/failure\u屏幕截图/“+methodName+”\u“+formatter.format(calendar.getTime())+”.png”);
copyFile(scrFile,destFile);
记录者。日志(“”);
}捕获(IOE异常){
e、 printStackTrace();
}
}
}

假设您创建了如下驱动程序:

AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
您只需执行以下操作即可创建屏幕截图:

    File srcFile = driver.getScreenshotAs(OutputType.FILE);
    String filename = UUID.randomUUID().toString();
    File targetFile = new File(System.getProperty("user.dir") + "/screenshots/" + filename + ".jpg");
    try {
        FileUtils.copyFile(srcFile, targetFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
只需确保您的驱动程序会话仍处于活动状态,然后再进行屏幕截图->检查appium服务器日志,您可能会得到500,然后它无法截图


在appium 1.8和java客户端6.0.0-BETA5上测试,这里有一个简单的C#解决方案。翻译成Java应该不会太复杂

这里的screenshotName是您希望文件具有的名称,driver是您的驱动程序实例,用于引导应用程序

public void GetScreenshot(IWebDriver driver, string screenshotName)
{
    ITakesScreenshot ts = (ITakesScreenshot) driver;

    var screenshot = ts.GetScreenshot();
    var screenshotPath = @"C:\temp\" + screenshotName +".bmp";

    screenshot.SaveAsFile(screenshotPath);
}
希望这有帮助