为浏览器设置视口大小

3

我正在使用Selenium玩一个由我开发的Web应用程序页面。

使用Selenium JavaScriptExecutor,我执行了以下脚本。

executor.executeScript("return window.innerWidth");
executor.executeScript("return window.innerHeight");
令我惊奇的是,所谓的视口尺寸在Chrome、IE和Firefox中不同。其中:
Chrome: 1366x667
IE: 1366x667
Firefox: 1366x657。
后来我意识到,对于body和main div,我给它们设置了宽度和高度为100%的css样式,这会影响视口大小。由于不同的浏览器具有不同大小的工具栏和菜单,当实际页面呈现时,这个100%的值会改变。
因此,我使用window.resizeTo(w,h)来设置一个公共视口大小。但是,我发现除非窗口是由同一个脚本打开的,否则它在现代浏览器中不起作用。
因此,我使用了Selenium的...
driver.manage().window().setSize(new Dimension(w,h));

然而我无法设置通用的视口大小。

请帮忙查找,是否可以使用selenium设置通用视口大小?如果需要更多信息,请告诉我。

对于所有浏览器,我执行了以下代码:

driver.manage().window().getSize();

我得到的答案是1382x744。

因此,我相信这是关于整个浏览器窗口的,而不仅仅是渲染区域。 我很困惑,根据innerWidth的差异如何计算浏览器窗口的新大小?

备注:我已经将所有浏览器升级到最新版本(IE版本为11,因为我使用的是Windows 7),我正在使用的selenium版本是2.46.x。


你试过直接传递(w, h)而不是使用"new Dimension"吗?driver.manage().window().setSize(w, h); - Tom Netzband
@TomNetzband:是的,我尝试过了,但有点困惑。当使用get dimension获取所有浏览器的尺寸时,它显示为1382x744,因此我不确定如何根据innerWidth计算并获取浏览器窗口的新尺寸,因为这个尺寸会影响整个浏览器而不仅仅是渲染区域。 - Priyank Thakkar
这篇文章中描述的一些概念可能会有所帮助。 - JeffC
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
0
“令我惊讶的是,所谓的视口大小在Chrome、IE和Firefox上都不同。” “不应该感到惊讶,因为所有浏览器的视口大小都不同,甚至Safari也有不同的大小。当您调用window.innerHeight时,它只计算浏览器内部内容。因此,任何在其外部的内容都不会被计算,例如输入URL的区域就不会被计算。因此,每个浏览器使用不同数量的最大高度来适应其选项卡和全局地址栏。” “当您使用driver.manage().window().setSize(new Dimension(w,h));并将其设置为1920x1080时,那么所有浏览器都将设置为该大小,但它们使用的内部高度当然会有所不同。” “如果您希望整个浏览器呈现为1920x1080,则建议使用”
using Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F11);
Thread.sleep(250);    
robot.keyRelease(KeyEvent.VK_F11);

但我建议不要这样做,因为更有效的测试是使用浏览器的正常内部高度,因为大多数用户不会按F11并在全屏下查看其内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,