在带有覆盖的页面上使用phantomjs捕获屏幕截图
Capture screenshot with phantomjs on a page with overlay
我正试图将网站的一个特定div捕获到屏幕截图中,以方便我必须做的一些繁重的工作。到目前为止,我正在使用我在这个完全相同的网站上找到的代码,这有点工作:
var page = require('webpage').create();
page.open('http://www.example.org', function() {
// being the actual size of the headless browser
page.viewportSize = { width: 1440, height: 900 };
var clipRect = page.evaluate(function(){
return document.querySelector("div.example").getBoundingClientRect();
});
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
page.render('google.png');
phantom.exit();
});
这确实有效,但我有两个问题:
1) 该页面在第一次访问时有一个覆盖,屏幕截图上出现了一个弹出式窗口。2) 图像显然是在需要渲染时下载的(它们只在网页上滚动时出现)
所以最后我得出这样的结论:问题
我没有使用phantomjs的经验,所以我不知道如何解决这个问题。消除覆盖DIV和以某种方式迫使图像在截图前加载可能会起作用,但我不知道如何实际编码。
非常感谢!
您可以通过编程删除覆盖元素,以像素为单位设置页面滚动位置,等待几秒钟加载图像,然后进行屏幕截图。
var page = require('webpage').create();
page.viewportSize = { width: 1440, height: 900 };
page.open('http://www.jovago.com', function() {
// jQuery is used at the target site
page.evaluate(function(){
$("#overlay, #modal").remove();
});
// Simulate scrolling down
page.scrollPosition = {
top: 1400,
left: 0
};
var clipRect = page.evaluate(function(){
return document.querySelector("div.top-destinations-homepage.promo-banners-box").getBoundingClientRect();
});
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
// Wait 10 seconds for images to download
setTimeout(function(){
page.render('jovago.png');
phantom.exit();
}, 10000);
});
相关文章:
- 获取屏幕截图并在电子邮件中发送的按钮
- 如何使用selenium和同步JS进行屏幕截图
- 使用javascript api创建youtube的屏幕截图
- 删除闪烁的光标进行网络屏幕截图测试
- 如何在html和javascript中捕捉聚合物元素的屏幕截图
- Phanomjs 未正确捕获网页的屏幕截图
- UIWebview在页面上执行注入的JavaScript后的屏幕截图
- 限制从iPad拍摄屏幕截图
- 使用Html2Canvas的文本区域屏幕截图
- 从json文件输出多个屏幕截图(例如itunes搜索api)
- 点击按钮即可创建网页的图片/pdf/屏幕截图
- 如何在asp.net中获取当前页面的屏幕截图
- 如何使用JavaScript拍摄部分谷歌地图的屏幕截图
- 拍摄元素的屏幕截图
- 如何使用javascript或jquery获取网页的屏幕截图
- 使用 chrome.tabs.captureVisibleTab 的屏幕截图
- 适用于 PDF 的 PhantomJS 屏幕截图 - 画布缩放
- 在带有覆盖的页面上使用phantomjs捕获屏幕截图
- 如何使用asp.net和phantomjs获取页面的屏幕截图并将其返回给客户端
- 如何使用 phantomjs 通过动态数据可视化拍摄屏幕截图