Automated Screenshot Taking API
在我们公司,我们需要截取整个网站地图的屏幕快照,手动完成这项工作是一件很痛苦的事情。 我已使用Webdriver API(Selenium 2)在浏览器上截屏,但我们也有移动网络。 Google chrome具有设备尺寸设置,可将网站显示为移动网站。 在Google chrome中无法调整大小的浏览器屏幕截图。 不确定是否可以拍摄Iphone,Android手机或两个虚拟设备的屏幕截图。 研究后没有找到好的答案。 我正在尝试实现一些可以对任何移动网页进行自动截图并将其保存到基于URL的特定目录中的功能。 我更喜欢使用任何JAVA库来执行此操作,但可以接受任何建议。 希望在这里得到最好的答案。
从使用Robotium的设备
您可以使用robotium从设备上截取屏幕截图。通过Robotium项目网站上的问题解答:
Can I take screenshots from inside of Robotium?
Yes you can. Use takeScreenshot() to save a screenshot in
"/sdcard/Robotium-Screenshots/". Observe that this functionality
requires write permission (android.permission.WRITE_EXTERNAL_STORAGE)
in the AndroidManifest.xml of the application under test.
使用构建服务器从模拟器中
另一种选择是使用诸如jenkins / hudson之类的构建服务器。有一些插件可用于在构建过程中启动模拟器并从该模拟器获取屏幕截图。
有关该网站的详细信息,列出了插件详细信息。
概括地说,您需要一个API,以便使用不同的视口以及可能还有不同的用户代理标头捕获某些网站的自动屏幕截图,因为您希望它对移动设备看起来很真实。
我亲自使用以下两个API取得了很好的经验:
-
screenshotlayer API-https://screenshotlayer.com
-
url2png-http://url2png.com
我只是向您简要提示如何使用iPhone
这是您将使用的API请求URL:
1 2 3 4 5 | http://api.screenshotlayer.com/api/capture ? access_key = YOUR_ACCESS_KEY & url = http://www.tumblr.com & user_agent = Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A366 Safari/600.1.4&viewport=375x667 & viewport = 375x667 |
现在,API将返回给定URL的iPhone 6屏幕截图(在我们的情况下为tumblr.com)。
对于url2png,它非常相似。
希望这会有所帮助!
编辑
我忘了提一下-您可以指定一个" ftp"路径以将快照导出到
您可以尝试使用ApiFlash屏幕快照API。该API基于Chrome,因此渲染效果接近像素完美,并且对于网络标准而言始终是最新的。
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; public class Main { public static void main(String[] args) throws Exception { String accessKey ="YOUR_ACCESS_KEY"; String apiUrl ="https://api.apiflash.com/v1/urltoimage"; URL url = new URL(String.format("%s?access_key=%s&url=google.com&width=800&height=600", apiUrl, accessKey)); InputStream inputStream = url.openStream(); OutputStream outputStream = new FileOutputStream("screenshot.jpeg"); byte[] b = new byte[2048]; int length; while ((length = inputStream.read(b)) != -1) { outputStream.write(b, 0, length); } inputStream.close(); outputStream.close(); } } |
您可以为具有虚拟移动浏览器(iPhone,iPad和Android)的公共网站尝试Browshot。他们有一个API。没有Java库(只有Perl,PHP,Ruby和Python),但是您可以使用Mashape中的Java库。