скриншот Java-код в Appium Селен - PullRequest
0 голосов
/ 02 мая 2018

Может кто-нибудь посоветовать мне, каким должен быть код захвата скриншота для 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();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вот простое решение в C #. Перевод на Java не должен быть слишком сложным

Здесь screenshotName - это имя, которое вы хотите, чтобы ваш файл имел, а драйвер - это ваш экземпляр драйвера, управляющий вашим приложением.

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

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

    screenshot.SaveAsFile(screenshotPath);
}

Надеюсь, это поможет!

0 голосов
/ 02 мая 2018

Предполагается, что вы создали драйвер примерно так:

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

Прежде чем делать снимок экрана, просто убедитесь, что ваш сеанс драйвера еще жив -> проверьте журналы сервера приложений, возможно, у вас есть 500, а затем не удалось сделать снимок экрана

Проверено на appium 1.8 и java-клиенте 6.0.0-BETA5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...