为了记录我的网页设计过程,我想在每次重新加载页面或保存 html 文档或样式表时在我的本地主机上截取带有页面时间戳的屏幕截图。
我使用 grunt 作为任务运行器和无头浏览器 phantomjs 来捕获页面。使用 grunt-localscreenshots https://www.npmjs.org/package/grunt-localscreenshots很容易手动捕获页面。但它很麻烦,完成任务最多需要 10 秒。屏幕捕获过程应该在后台不断发生,但仅在页面更改或保存时发生。
所以我编写了这个 shellscript,它监视目录中的文件更改并触发 phantomjs 脚本。
while true
do
ATIME=`stat .`
if [[ "$ATIME" != "$LTIME" ]]
then
phantomjs screenshot.js
LTIME=$ATIME
fi
sleep 0.5
done
这是 phantomjs 脚本
var page = require('webpage').create();
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.open("http://127.0.0.1:8080/screenshot-test/dev", function(status) {
if (status === "success") {
window.setTimeout(function() {
var now = Date.now();
page.render('screenshots/' + now + '.png');
phantom.exit();
}, 1000);
} else {
console.log("nono");
phantom.exit();
}
});
这有点工作,但非常不稳定,只有在 html 更改时才会触发。如果实际上没有任何变化,它也需要 2 或 3 个重复的屏幕截图,有时它根本不需要屏幕截图。可能的原因是页面的渲染时间太长了。任何关于稳定可用解决方案的想法?理想将是一项艰巨的任务