【问题标题】:How to set browser client area size using Selenium WebDriver?如何使用 Selenium WebDriver 设置浏览器客户区大小?
【发布时间】:2016-07-19 22:11:59
【问题描述】:

我在 Selenium 问题管理系统中找到了如何设置浏览器窗口大小(参见 Browser window control #174):

Window window = driver.manage().window();
window.setPosition(new Point(0, 0));
window.setSize(new Dimension(width, height));

但是这个解决方案设置了整个窗口的大小(标题栏、书签栏、边框等),因此客户区在不同的浏览器中具有不同的大小。有没有办法为流行的浏览器(Chrome、FireFox、Internet Explorer、Opera 和 Safari)简单地设置相同的值?如果我不需要评估 JavaScript,那就太好了。

【问题讨论】:

  • 解决方案是通过driver.get() 切换窗口,然后在您位于该区域时管理window 的大小。你想过这种可能性吗?

标签: selenium selenium-webdriver


【解决方案1】:

使用一段 Javascipt 会更容易,但既然你没有问:

Dimension win_size = driver.manage().window().getSize();
WebElement html = driver.findElement(By.tagName("html"));
int inner_width = Integer.parseInt(html.getAttribute("clientWidth"));
int inner_height = Integer.parseInt(html.getAttribute("clientHeight"));

// set the inner size of the window to 400 x 400 (scrollbar excluded)
driver.manage().window().setSize(new Dimension(
    win_size.width + (400 - inner_width),
    win_size.height + (400 - inner_height)
));

还有一段 Javascript 以防万一:

ArrayList padding = (ArrayList)((JavascriptExecutor) driver).executeScript(
  "return [window.outerWidth-window.innerWidth, window.outerHeight-window.innerHeight];");

// set the inner size of the window to 400 x 400 (scrollbar included)
driver.manage().window().setSize(new Dimension(
    (int)(400 + (Long)padding.get(0)),
    (int)(400 + (Long)padding.get(1))
));

【讨论】:

  • 如果我在空白页上调用它可以工作吗?步骤:启动浏览器,查看默认页面(例如空白),设置大小,导航到具体页面
  • 第一个示例可能不适用于空白页,但第二个应该可以。
最近更新 更多