如何通过appium + selenium

时间:2016-04-06 11:37:07

标签: android selenium automation screenshot appium

有人知道如何通过appium + selenium将实际Android设备截取的截图保存到设备本地存储? 在这里,我有一个方法,可以从设备截取屏幕并将其保存到PC存储。 但是如何设置路径将它们保存在真实设备文件夹中(例如deviceName \ tablet \ GUI \ screenshots \ screenshot.jpg ...或其他方式), 考虑到代码应该在PC上运行。

P.S。我的应用程序是混合的,所以我将切换上下文设置为" NATIVE_APP"然后回到WEBVIEW。

    public static void getScreenshot(String screenName) throws IOException {
    String contextName = AppiumConfigurationTest.driver.getContext();
    AppiumConfigurationTest.driver.context("NATIVE_APP");

    String Screenshotpath = "C:\\!automation\\build\\reports\\gui_screen_capture\\";
    File screenShot = AppiumConfigurationTest.driver.getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(screenShot, new File(Screenshotpath + screenName+"_ " + "." + "jpg"));

    AppiumConfigurationTest.driver.context(contextName);


}

2 个答案:

答案 0 :(得分:1)

您可以从代码中执行adb命令,在这种情况下,这将对您有所帮助:

adb shell screencap -p /sdcard/screen.png

注意:将屏幕截图保存在具有不同命名测试/版本的笔记本电脑上比将其保存在设备上要好。

答案 1 :(得分:1)

File scrFile = ((TakesScreenshot) appiumDriver).getScreenshotAs(OutputType.FILE);

BufferedImage originalImage=null;

try {
    originalImage= ImageIO.read(((TakesScreenshot) appiumDriver).getScreenshotAs(OutputType.FILE));
}
catch(Exception e) {
    System.out.println("\n\n\n\nbuffered image" + originalImage +"\n\n\n\n\n\n");
    Thread.sleep(5000);
    e.printStackTrace();
}

System.out.println("buffered image" + originalImage);
BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizedImage = CommonUtilities.resizeImage(originalImage, IMG_HEIGHT, IMG_WIDTH);
            ImageIO.write(resizedImage, "jpg", new File(path + "/"+ testCaseId + "/img/" + index + ".jpg"));