Node.js 使用Nightwatch从Browserstack捕获全高屏幕截图

Node.js 使用Nightwatch从Browserstack捕获全高屏幕截图,node.js,selenium,nightwatch.js,browserstack,Node.js,Selenium,Nightwatch.js,Browserstack,我想使用Browserstack从夜视测试中捕获全高屏幕截图-我可以捕获可见屏幕,但不能捕获整个文档 我试过这个: browser.execute(function () { // get document dimensions }, [], function (result) { // browser.resizeWindow(to value sent as result) browser.saveScreenshot('filename.png'); }); 但是

我想使用Browserstack从夜视测试中捕获全高屏幕截图-我可以捕获可见屏幕,但不能捕获整个文档

我试过这个:

browser.execute(function () {
    // get document dimensions
}, [], function (result) {
    // browser.resizeWindow(to value sent as result)
    browser.saveScreenshot('filename.png');
});
但是,虽然生成的图像具有正确的宽度,但高度仅限于(我认为)在Browserstack中打开的浏览器的分辨率


有可能做到这一点吗?

我认为这是浏览器本身的局限性。例如,当通过Selenium在Chrome 29+上进行测试时,您将只能捕获显示网页的可见区域


在您机器上的同一浏览器上本地运行测试时,您是否能够捕获完整的页面屏幕截图?如果是,则需要与BrowserStack一起检查。如果它在本地工作,那么它应该在BrowserStack上工作。

我通过做两件事来解决这个问题:

  • 向my nightwatch.json添加高分辨率值:
  • “您的平台名”:{ “期望的能力”:{ “决议”:“1200x3000” //... } }
  • 在代码中激活(取消注释)browser.resizeWindow()以在捕获之前调整当前窗口的大小:
  • browser.execute(函数(){ //获取文档维度 },[],函数(结果){ //browser.resizeWindow(根据结果发送的值) 浏览器。调整窗口大小(12003000); browser.saveScreenshot('filename.png'); });
    对我来说,1200x3000的大小足以捕获整个文档。尝试增加这些值和测试以满足您的需要。

    我在本地使用phantomjs完成了这项工作,效果很好,但在Browserstack上针对WebKit浏览器则不行。我有一种感觉,这可能是对Browserstack的一个故意的限制,因为他们提供了一个屏幕截图API,而且价格不菲。也许不想蚕食他们自己的产品…可能必须做捕获、滚动、捕获然后将结果缝合在一起这是一个非常有趣的问题。在我的工作中,我们使用带有浏览器堆栈的Nightwatch进行功能/回归/跨浏览器测试。但我们也开发了基于使用Puppeter在不同环境下拍摄屏幕截图的内部工具,并将其与其他Diff工具进行比较。有趣的解决方案是,您的“获取文档维度”注释使我的方法更加灵活。通常,页面的宽度可以由高度固定,每页的宽度可能非常大。
    saveScreenshot
    采用当前页面高度会很有用。 "yourPlatformName": { "desiredCapabilities": { "resolution": "1200x3000" //... } } browser.execute(function () { // get document dimensions }, [], function (result) { // browser.resizeWindow(to value sent as result) browser.resizeWindow(1200, 3000); browser.saveScreenshot('filename.png'); });