如何使用 Selenium WebDriver 设置浏览器客户端区域大小?

aga*_*rys 5 selenium selenium-webdriver

我找到了如何在 Selenium 问题管理系统中设置浏览器窗口大小(请参阅浏览器窗口控制 #174):

Window window = driver.manage().window();
window.setPosition(new Point(0, 0));
window.setSize(new Dimension(width, height));
Run Code Online (Sandbox Code Playgroud)

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

Flo*_* B. 6

使用 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)
));
Run Code Online (Sandbox Code Playgroud)

并使用一段 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))
));
Run Code Online (Sandbox Code Playgroud)