Appium Appium Android 如何截图?求 java 代码

shen · 2013年12月04日 · 最后由 恒温 回复于 2013年12月05日 · 3125 次阅读

RT,py 的我知道,java 有类似 get_screenshot_as_file 的方法?

共收到 11 条回复 时间 点赞

python 也有, 自己翻下 python webdriver 的文档吧. 或者 google 下

@Test(enabled = false)
public void testScreenshot() {
    //make screenshot and get is as base64
    WebDriver augmentedDriver = new Augmenter().augment(driver);
    String screenshot = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.BASE64);

    assertNotNull(screenshot);
    //make screenshot and save it to the local filesystem
    File file = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.FILE);
    assertNotNull(file);
}

试试看。

shen #10 · 2013年12月05日 Author

#1 楼 @seveniruby py 的没问题,就是 java 按照建议的方法没法截图

shen #9 · 2013年12月05日 Author

#2 楼 @lihuazhang WebDriver augmentedDriver = new Augmenter().augment(driver); 这句话执行的时候就报错了,现在用 mobile: localScreenshot 的方法能截图了

8楼 已删除

#4 楼 @spikeshen 请问 你 现在用 mobile: localScreenshot 的方法能截图了 mobile: localScreenshot 是什么方法? 怎么使用啊?

#6 楼 @sundaxian 搞定了 是 webdriver 的问题

@sundaxian 什么问题,求解啊

#8 楼 @alvn 你是想手动的截图还是运行失败时自动截图的? 如果是前者的话 直接
File f = ((TakesScreenshot) (new Augmenter().augment(driver())))
.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(f, imageFile); 就可以了

如果是后者的话 你需要重写 TakesScreenshot 里面的 getScreenshotAs 方法 这样可以实现 失败自动截图

@sundaxian 测试通过了,谢谢
不过还要在一下代码添加
1)class 要添加 static
2) 添加这个构造函数 public SwipeableWebDriver(){ }

public static class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen {
private RemoteTouchScreen touch;
public SwipeableWebDriver(){
}
public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) {
super(remoteAddress, desiredCapabilities);
touch = new RemoteTouchScreen(getExecuteMethod());
}

public TouchScreen getTouch() {
return touch;
}
}

#10 楼 @alvn 嗯 我没有使用 SwipeableWebDriver 我是自己封装的 driver。

楼主能分享下 Python 实现 appium 截图方法么

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