在appium selenium中截图java代码

时间:2018-05-02 07:17:47

标签: java android appium

任何人都可以告诉我AndroidDriver的屏幕截图捕获代码应该是什么。我使用下面的代码,我得到突出显示的行的Java空指针异常。

Driver是一个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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

假设你创建了这样的驱动程序:

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();
    }

在制作屏幕截图之前,请确保您的司机会话仍然有效 - &gt;检查appium服务器日志,你可能得到500,然后它无法截取屏幕

appium 1.8 java-client 6.0.0-BETA5

上进行测试

答案 1 :(得分:0)

这是C#中的一个简单解决方案。翻译成Java不应该太复杂

此处,screenshotName是您希望文件具有的名称,而驱动程序是您驾驶appium的驱动程序实例。

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

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

    screenshot.SaveAsFile(screenshotPath);
}

希望这有帮助!