Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在量角器中拍摄整个页面的截图?_Javascript_Angularjs_Selenium_Testing_Protractor - Fatal编程技术网

Javascript 如何在量角器中拍摄整个页面的截图?

Javascript 如何在量角器中拍摄整个页面的截图?,javascript,angularjs,selenium,testing,protractor,Javascript,Angularjs,Selenium,Testing,Protractor,下面应该有一个方法来拍摄整个页面的截图,而不仅仅是可见的框架。事实上,这应该是默认行为 当调用takeScreenshot()时 browser.takeScreenshot().then(function (png) { // writing down image }); 然后在文件中保存选项3。来自文档-“当前帧的可见部分”。如何强制webdriver拍摄整页屏幕截图?这与相应的浏览器驱动程序服务器有关。 e、 g如果您使用的是chrome,chromedriver服务器负责提供整

下面应该有一个方法来拍摄整个页面的截图,而不仅仅是可见的框架。事实上,这应该是默认行为

当调用
takeScreenshot()

browser.takeScreenshot().then(function (png) {
    // writing down image
});

然后在文件中保存选项3。来自文档-“当前帧的可见部分”。如何强制webdriver拍摄整页屏幕截图?

这与相应的浏览器驱动程序服务器有关。 e、 g如果您使用的是chrome,chromedriver服务器负责提供整个页面的屏幕截图


它与WebDriver客户端库或量角器无关。

这是一个黑客攻击,但您可以将
onPrepare
中的浏览器高度设置为
2000
像素或其他高值:

browser.driver.manage().window().setSize(320, 2000);

我在这里使用的是jasmine reporters(节点包)

在conf文件中编写代码

onPrepare: function () {
jasmine.getEnv().addReporter({
            specDone: function (result) {
                if (result.status === 'failed') {
                    browser.getCapabilities().then(function (caps) {
                        var browserName = caps.get('browserName');
                        browser.takeScreenshot().then(function (png) {
                            var stream = fs.createWriteStream('screenshots/' + browserName + '-' + result.fullName + '.png');
                            stream.write(new Buffer(png, 'base64'));
                            stream.end();
                        });
                    });
                }
            }
        });
}
上述代码在出现故障时拍摄屏幕截图,然后将其存储在名为screenshots的文件夹中,文件名为:-

browsername-errorItBlockName.png

示例:-

it('user signup', function () {
// error here
}

屏幕截图名称:chrome user signup.png

将以下代码添加到规范文件中:

var fs=require('fs');
browser.takeScreenshot().then(函数(png){
writeScreenShot(png,“exception.png”);
});
函数writeScreenShot(数据、文件名){
var stream=fs.createWriteStream(文件名);
stream.write(新缓冲区(数据'base64');
stream.end();
}

这将获取页面的屏幕截图,并将作为exception.png添加到项目文件夹中。

您可以使用以下代码获得完整的屏幕截图:

browser.driver.manage().window().setSize(width, height);
您可以根据html页面调整宽度和高度。

chrome上有一个bug。

在更改浏览器高度(
browser.driver.manage().window().setSize(3202000);
)后,Firefox将获取整个页面的屏幕截图,但不会获取Chrome。

文档中说,Ptor会按顺序尝试每种方法,第一种方法有效。因此,它不是故意只给你#3;它曾考虑过使用#1和#2,但无法使用。除非您将窗口的宽度和高度设置得足够大,否则无法使用整个页面。如果您使用的是800 x 600,但页面需要滚动,则不会截取页面上的部分。仅从显示区域截取屏幕截图