如何在网站上进行全屏截图

5

我需要通过URL获取网站的全屏截图,有没有相关的PHP程序或服务?如果没有,是否有任何Java程序可以实现这个目的?

8个回答

6

哇,#2 真棒!将来一定要记住这个。 - snicker

3
你需要使用特殊版本的浏览器才能在PHP或Java处理页面后进行“渲染”。
你很可能需要设置一些自定义自动化脚本,以在ping到运行Windows、OSX或Linux窗口管理器的服务器后访问URL。
有一些服务可以为你截取屏幕截图。

http://www.browsercam.com

http://webthumb.bluga.net/home

举几个例子。


3

对我来说最好的解决方案是: 使用 selenium webdriver 并且获取屏幕截图可以像这样简单:

import java.io.File;
import java.net.URL;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class Testing {

    public void myTest() throws Exception {
        WebDriver driver = new RemoteWebDriver(
                                new URL("http://localhost:4444/wd/hub"), 
                                DesiredCapabilities.firefox());

        driver.get("http://www.google.com");

        // RemoteWebDriver does not implement the TakesScreenshot class
        // if the driver does have the Capabilities to take a screenshot
        // then Augmenter will add the TakesScreenshot methods to the instance
        WebDriver augmentedDriver = new Augmenter().augment(driver);
        File screenshot = ((TakesScreenshot)augmentedDriver).
                            getScreenshotAs(OutputType.FILE);
    }
}

别忘了使用 FireFoxDriver。HtmlUnitDriver 无法工作,因为它是无界面的。

非常容易!!


但是您需要运行Selenium服务器并安装Firefox浏览器才能使其正常工作? - newbie
@newbie 需要安装Firefox浏览器,但不需要运行Selenium服务器。您只需要将所需的库导入到Java项目中即可。 - rahulserver

2
Litmus”是一个非常好的在线资源,你可以提交一个URL并在最新的浏览器上进行全屏截图。如果你购买了付费订阅或者在周末使用它,你将可以测试所有22种浏览器,而不仅仅是最新的浏览器。我经常使用这个网站,我认为它非常棒。
BrowserShots”也很好,支持更多的浏览器,但根据我的经验,速度比较慢。不过,如果你需要测试一些“Litmus”没有的浏览器,那么使用它就很好。

我并不是需要在不同的浏览器上测试网页,而是需要快速从给定的URL获取屏幕截图。是否有任何开源/免费应用程序可以做到这一点,它真的不必是PHP或Java,只要是免费软件就行... - newbie
我猜我还没有理解它们之间的区别。你仍然可以使用Litmus或Browsershots来进行相同的测试,只需为一个浏览器运行测试即可。 - Twisol

0

尝试使用无头浏览器。以下任何一个都可以:

  • PhantomJS -> 使用“Webkit”布局引擎(Safari / Chromium)
  • TrifleJS -> 使用“Trident”布局引擎(Internet Explorer)
  • SlimerJS -> 使用“Gecko”布局引擎(Firefox)

您可以使用以下JavaScript代码(保存到文件renderpage.js)来截取屏幕截图:

var page = require('webpage').create();
page.open('http://en.wikipedia.org', function() {
    page.render('wikipedia.png');
});

然后通过命令行执行:

> phantomjs.exe renderpage.js

这将创建一个名为wikipedia.png的文件,其中包含您的屏幕截图。


0
我发现 CutyCapt 是最简单的屏幕截图解决方案,可在 Windows 和 Linux 上运行。
在 Windows 中安装:
只需下载文件并执行即可。
在 Debian 中安装:
apt-get install cutycapt xvfb

和运行:

xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/cutycapt --url=http://www.google.com --out=/home/screenshots/screenshot_name.png

0

如果您有专用服务器,也可以自己完成此操作。其思路是启动X Server和全屏模式下的浏览器,拍摄并保存为图像文件。

根据您的使用情况(偶尔或频繁),您可以调整该过程(即不必每次都杀死X等)以使其更快。


0
从问题中并不清楚您是想通过编程还是手动的方式来实现。如果是手动的话,有一个非常好用的 Firefox 插件叫做 Abduction! 可以将页面渲染成图片。否则,Kane 的回答已经基本覆盖了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接