如何在Nightwatch.js中仅截取页面中可见元素的屏幕截图?

时间:2016-06-06 10:26:30

标签: javascript selenium nightwatch.js webpage-screenshot

我可以使用Nightwatch.js成功捕获整个网页,使用以下代码段:

module.exports = {
    'open the page': function (browser) {
        browser
            .url('http://localhost')
            .waitForElementVisible('body', 1000)
            .resizeWindow(320, 480)
            .saveScreenshot('./screenshot/mobile/login.png');
    }
}

在我的场景中,我打开的页面包含大量内容,这些内容会滚动到页面底部。上面代码的捕获量是320x1200像素,我希望它们能够以320x480像素出现。

我想只捕获首屏以上的'屏幕的元素,而不是整个网页,这似乎是默认的。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

要求使用您描述的功能(但使用Python,Selenium和PhantomJS),我最终保存屏幕截图,然后使用单独的工具(一些ImageMagick包装器)裁剪保存的图像。在您的情况下,foreach ($employees as $program => $employee) { $employee_string = $employee_string . $nc->q($employee[$program], NCL::$DATELN) . ', '; foreach ($employee as $single) { $empList = htmlspecialchars($empList . $single . '<br>'); } $programs_and_employees = htmlspecialchars($programs_and_employees . '«' . $programs[$program] . '»' . ': <br>' . $empList . '<br>'); } $contract->setValue('programs_and_employees', $programs_and_employees); 可能是解决方案(https://www.npmjs.com/package/png-crop)。例如,当您指定宽度为320px且高度为480px的窗口时,保存的屏幕截图可能具有320px的宽度和2500px的高度,具体取决于页面的“高”程度。然后,您可以继续将保存的图像裁剪为320像素宽和480像素高的图像,保留图像的上半部分。