带有Nightwatch的调整大小的窗口更小

时间:2017-05-05 10:32:21

标签: javascript nightwatch.js

情况:我们需要在Nightwatch中针对不同的屏幕尺寸(桌面,平板电脑,智能手机布局等)运行测试,因此我们需要将浏览器窗口调整为特定尺寸。让我们说平板电脑断点是1024x768,所以我们将destop的窗口宽度和高度设置为1025x768,但是当测试运行时它会失败,因为布局仍处于平板电脑模式(屏幕截图显示的大小实际内容面积为1006x636)。

经过一些研究(question1question2question3),事实证明调整大小是将整个窗口大小设置为1024x768,而不考虑浏览器的边框和滚动条和其他这样的元素,那么实际内容区域仍然小得多。每个浏览器和操作系统都有不同之处,在Windows和Linux上你基本上可以定义自己的窗口样式,这样会再次添加不同的大小,所以我们无法计算它。

问题:有什么办法可以使用Nightwach / javascript将窗口内容区域设置为特定大小吗?

1 个答案:

答案 0 :(得分:1)

根据Selenium wire protocol,您只能调整窗口大小。但是,如果你将所需的尺寸与你实际获得的尺寸进行比较,你可以再次调整尺寸以适应它。例如:

var target = { width: 600, height: 400 };
browser
    .resizeWindow(target.width, target.height)
    .getElementSize('body', function(result) {
        console.log("My content is ", result.value.width, " by ", result.value.height);
        browser
            .resizeWindow(target.width + (target.width - result.value.width), 
                          target.height + (target.height - result.value.height))
            .getElementSize('body', function(result) {
                console.log("Now my content is ", result.value.width, " by ", result.value.height);
            })
    })

运行这个我得到:

My content is  584  by  270
Now my content is  600  by  400

Here is another way to do it在浏览器中运行Javascript片段以确定窗口填充(不同的框架,也应该与NW一起使用。)