情况:我们需要在Nightwatch中针对不同的屏幕尺寸(桌面,平板电脑,智能手机布局等)运行测试,因此我们需要将浏览器窗口调整为特定尺寸。让我们说平板电脑断点是1024x768,所以我们将destop的窗口宽度和高度设置为1025x768,但是当测试运行时它会失败,因为布局仍处于平板电脑模式(屏幕截图显示的大小实际内容面积为1006x636)。
经过一些研究(question1,question2,question3),事实证明调整大小是将整个窗口大小设置为1024x768,而不考虑浏览器的边框和滚动条和其他这样的元素,那么实际内容区域仍然小得多。每个浏览器和操作系统都有不同之处,在Windows和Linux上你基本上可以定义自己的窗口样式,这样会再次添加不同的大小,所以我们无法计算它。
问题:有什么办法可以使用Nightwach / javascript将窗口内容区域设置为特定大小吗?
答案 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一起使用。)