monkeyrunner 自动截图功能

周小丽 · 2015年09月10日 · 最后由 帅气与霸气共存的大男孩 回复于 2015年09月14日 · 3755 次阅读
public static void snapshot(TakesScreenshot drivername, String filename)  //此方法为屏幕截图
    {     
        String currentPath = System.getProperty("user.dir"); // 获取当前工作路径
        File scrFile = drivername.getScreenshotAs(OutputType.FILE); //利用 TakesScreenshot接口提供的 getScreenshotAs()方法捕捉屏幕,会将获取到的截图存放到一个临时文件中
        try 
        {
            System.out.println("save snapshot path is:" + currentPath + "/" + filename);
            FileUtils.copyFile(scrFile, new File(currentPath + "\\" + filename));  //将临时文件拷贝到当前工作路径
        } 
        catch (IOException e)
        {
            System.out.println("Can't save screenshot");   //截图失败
            e.printStackTrace();  //打印出异常,与System.out.println(e)类似,但是它还将显示出更深的调用信息
        }
        finally 
        {
            System.out.println("screen shot finished, it's in " + currentPath + " folder");   //截图成功
        }
    }
共收到 6 条回复 时间 点赞

没看出来是如何自动截图的

我之前的做法是,我重新封装了 testng 的 assert 类,然后再 fail 方法中假如截图的方法。这样一旦抛错就自动截图。

同 1 楼,看到了截图,没看到自动。

我们的做法是使用 decorator(我们用 python),所有 action 如果有 exception(无论是 assertion error 还是别的 error)都执行指定操作(默认是截图)。

其实也可以考虑在 case 层面做,如果 case 出现异常就执行指定操作。

如果想获取更多信息的话,可以起个线程进行录制屏幕(adb shell 命令里就有录制屏幕的功能)。如果不出错就删掉录制的视频,否则就把视频保存起来,方便后面查看。

@shijin880921 ,好思路,不错,多谢啦,我调整下

@chenhengjie123 ,多谢点拨!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册