【问题标题】:Set viewport size for a browser设置浏览器的视口大小
【发布时间】:2015-11-15 14:30:08
【问题描述】:

我正在玩我使用 selenium 开发的 web 应用程序页面。

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

executor.executeScript("return window.innerWidth");
executor.executeScript("return window.innerHeight");

令我惊讶的是,所谓的视口大小与 Chrome、IE 和 Firefox 不同。

铬:1366x667 即:1366x667 火狐:1366x657

然后我意识到对于 body 和 main div,就在 body 旁边,我将 css 样式的宽度和高度设置为 100%,这反过来会影响视口大小。由于不同的浏览器有不同大小的工具栏和菜单,这个 100% 的值会在实际页面呈现时发生变化。

所以我使用 window.resizeTo(w,h) 来设置一个通用的视口大小。但我意识到它不适用于现代浏览器,除非窗口是由同一个脚本打开的。

所以我用了硒的

driver.manage().window().setSize(new Dimension(w,h));

但我无法设置通用视口大小。

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

我为所有浏览器执行了以下行:

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

我得到的答案是 1382x744

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

PS:我已将所有浏览器升级到最新版本(IE 是版本 11,因为我在 windows 7 上),selenium 版本我使用的是 2.46.x

【问题讨论】:

  • 您是否尝试过仅传递 (w, h) 而没有“新维度”? driver.manage().window().setSize(w, h);
  • @TomNetzband:是的,我试过了,我有点困惑。当为所有浏览器使用获取尺寸时,它是 1382x 744,所以我不确定如何根据 innerWidth 计算并为浏览器窗口获取新尺寸,因为这个尺寸不仅会影响整个浏览器的渲染区域。
  • this article 中描述的一些概念可能会有所帮助。

标签: javascript html selenium selenium-webdriver


【解决方案1】:

“令我惊讶的是,所谓的视口大小与 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 并全屏查看其内容。

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多