栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何截屏移动设备的整个高度?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何截屏移动设备的整个高度?

操作编辑:我选择了最后一个选项,在下面的选项中,我将其标记为“ 工作解决方案!

下面是解决问题的按类型分类的不同策略。


滚动,截屏,追加

在CrossBrowserTesting.com上引用屏幕截图系统的作者:

作为CrossBrowserTesting.com的屏幕截图系统的作者,我可以告诉您,我们能够在浏览器中一致且可靠地获取全屏屏幕截图的唯一方法是
滚动,捕获和追加图像

这里是一个示例工作实现示例,以

cnn.com
目标示例为例,滚动并获取可见区域的屏幕截图。使用
scrollHeight
clientHeight
scrollTop
确定在何处,我们都在一个垂直滚动位置以及如何更向下滚动。由于我们正在循环处理promise,因此必须使用“我们处于最底层”的基本条件来创建递归函数:

var fs = require('fs'),    Utils = {        screenShotDirectory: '',        writeScreenShot: function (data, filename) { var stream = fs.createWriteStream(this.screenShotDirectory + filename); stream.write(new Buffer(data, 'base64')); stream.end();        },        getSizes: function () { return browser.executescript("return {scrollHeight: document.body.scrollHeight, clientHeight: document.body.clientHeight, scrollTop: document.body.scrollTop};");        },        scrollToBottom: function (height, index) { var self = this; self.getSizes().then(function (data) {     // continue only if we are not at the bottom of the page     if (data.scrollTop + data.clientHeight < data.scrollHeight) {         browser.executescript("window.scrollTo(0, arguments[0]);", height).then(function () {  browser.takeScreenshot().then(function (png) {      self.writeScreenShot(png, "test" + index + ".png");  });         });         self.scrollToBottom(height + data.clientHeight, index + 1);     } });        }    };describe("Scrolling and saving screenshots", function () {    beforeEach(function () {        browser.ignoreSynchronization = true;        browser.get("http://www.cnn.com/");    });    it("should capture an entire page", function () {        Utils.getSizes().then(function (data) { Utils.scrollToBottom(data.clientHeight * 2, 1);        });    });});

它将产生多个

test<index>.png
图像,然后可以将它们粘合在一起。

要在“单列图像”中合并图像,例如,您可以

GraphicsMagick
通过
gm
nodejs模块使用图像处理系统。模式中带有选项的
.montage()
方法
会有所帮助。样例代码:
concatenate``1x

var gm = require('gm');Utils.getSizes().then(function (data) {    var index = Utils.scrollToBottom(data.clientHeight * 2, 1);    var op = gm();    for (var i = 1; i <= index; i++) {        op = op.in("test" + i + ".png");    }    op = op.montage().mode("concatenate").tile("1x");    op.write('output.png', function (err) {        if (err) console.log(err);    });});

更换浏览器

在Chrome中,您始终只会在结果屏幕截图上看到可见区域,这是相关

chromedriver
问题,其中包含有关该问题的大量信息以及多种解决方法:

  • ChromeDriver2的屏幕截图不完整

出乎意料的是,它虽然应该在Firefox中也可以工作 -如果可能,请切换到它:

占据整个屏幕的Chrome屏幕截图与Firefox的不同。Firefox将捕获整个屏幕,甚至包括当前不可见的部分屏幕。Chrome不会!


调整屏幕尺寸

另一个选择是使用诸如的服务,

BrowserStack
SauceLabs
在特定的浏览器中的特定平台上启动测试,并使用
足够大特定分辨率 。量角器支持
Sauce Labs
BrowserStack
开箱即用。

BrowserStack的示例配置:

exports.config: {  browserstackUser: "user",  browserstackKey: "key",  capabilities: {    'browserstack.local': true,    'browserstack.debug': true,    browserName: "Chrome",    os: "Windows",    os_version: "8",    resolution: "2048x1536"  },}

然后, 最大化浏览器窗口

onPrepare()
例如inside ):

browser.driver.manage().window().maximize();

并截图。


工作解决方案!!!

另一种选择是在虚拟显示器中运行测试。我将遵循此博客文章并使用

Xvfb
,当您运行
Xvfb
服务器时,可以指定分辨率:

/usr/bin/Xvfb :99 -ac -screen 0 2048x6000x24 &

另请参阅以下主题的相关信息:

  • 用量角器和硒进行AngularJS无头端到端测试

您也可以使用允许配置屏幕尺寸的

docker-selenium
解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号