如何在Selenium中设置Chrome的窗口大小?

问题描述 投票:0回答:17

我正在使用 Selenium WebDriver 进行自动化,并且我正在使用 Chromedriver

我注意到,当我的驱动程序运行并打开 Chrome 浏览器时,它会打开具有奇怪大小的浏览器。 我尝试修复它但徒劳。

有人知道如何更改吗?

google-chrome testing browser selenium-chromedriver screen-size
17个回答
122
投票

Python

司机

chrome = 57.0.2987.133
chromedriver = 2.27.440174

代码:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--window-size=1920,1080")
driver = Chrome(chrome_options=chrome_options)

37
投票

将此用于您的自定义尺寸:

driver.manage().window().setSize(new Dimension(1024,768));

您可以根据您的要求更改尺寸。


16
投票
#use chrome webdriver

driver = webdriver.Chrome('path to /chromedriver')
driver.set_window_size(1400,1000)

12
投票

@yonatan-kiron 答案的 C# 版本,以及来自示例代码的 Selenium

using
语句。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--window-size=1300,1000");

using (IWebDriver driver = new ChromeDriver(chromeOptions))
{
    ...
}

10
投票

试试这个

using System.Drawing;
driver.Manage().Window.Size = new Size(width, height);

5
投票

尝试使用

driver.manage.window.maximize();
最大化窗口。


4
投票

红宝石


方法#1

options = {
      'chromeOptions' => {
          'args' => ['start-fullscreen']
      }
  }

caps = Selenium::WebDriver::Remote::Capabilities.chrome(options)
@driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

方法#2

options = {
      'chromeOptions' => {
          'args' => ['window-size=640,480']
      }
  }

caps = Selenium::WebDriver::Remote::Capabilities.chrome(options)
@driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

方法#3

max_width, max_height = @driver.execute_script("return [window.screen.availWidth, window.screen.availHeight];")
@driver.manage.window.resize_to(max_width, max_height)

方法#4

@driver.manage.window.maximize

方法#5

target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size

方法#6

@driver.manage.window.resize_to(640, 480)

方法#7

@driver.execute_script("window.resizeTo(640, 480);")

2
投票

如果您使用 php 的 Facebook 语言绑定,请尝试以下操作:

$driver->manage()->window()->setSize(new WebDriverDimension(1024,768));

2
投票

在 java/groovy 中尝试:

import java.awt.Toolkit;
import org.openqa.selenium.Dimension;         
import org.openqa.selenium.Point;

...

java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension maximizedScreenSize = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setPosition(new Point(0, 0));
driver.manage().window().setSize(maximizedScreenSize);

这将以全屏方式打开浏览器


2
投票

以下 chrome 选项对我适用于无头 chrome:

JAVA:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--window-size=1920,1080");
chromeOptions.setHeadless(true);
driver = new ChromeDriver(chromeOptions);
driver.get("your-site");
driver.manage().window().maximize();

selenium-java:3.8.1

chromedriver:2.43

Chrome:v69-71


0
投票

如果您使用的是 Clojure 和 https://github.com/semperos/clj-webdriver,您可以使用此代码片段来调整浏览器大小。

(require '[clj-webdriver.taxi :as taxi])

; Open browser
(taxi/set-driver! {:browser :chrome} "about:blank")

; Resize browser
(-> taxi/*driver* (.webdriver) (.manage) (.window) 
  (.setSize (org.openqa.selenium.Dimension. 0 0)))

0
投票

使用

Dimension Class
控制窗口大小。

Dimension d = new Dimension(1200,800);  //(x,y coordinators in pixels) 
driver.manage().window().setSize(d);

0
投票

Ruby 版本:

caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args"=> ["--window-size=1280,960"]})

url = "http://localhost:9515"  # if you are using local chrome or url = Browserstack/ saucelabs hub url if you are using cloud service providers.

 Selenium::WebDriver.for(:remote, :url => url, :desired_capabilities => caps)

调整 chrome 大小在最新的 chromedrivers 中存在错误,它会间歇性地失败并显示此失败消息。

                        unknown error: cannot get automation extension
from timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -65.294
  (Session info: chrome=56.0.2924.76)
  (Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f)

通过 javascript 进行的 resizeTo 也不支持通过 selenium webdriver 启动的 chrome。所以最后一个选项是使用命令行开关。


0
投票

只要您使用的总屏幕分辨率大于您要使用的窗口大小,您就可以使用此(C#):

browserDriver.Manage().Window.Size = windowSize;

如果您的屏幕分辨率较小,那么您就不走运了。我尝试了不同的方法,例如:

chromeOptions.AddArgument($"window-size={windowSize.Width},{windowSize.Height}");

甚至导入移动窗口函数来调整窗口大小:

[DllImport("user32.dll", SetLastError = true)]
static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int Width, int Height, bool Repaint);

// Example
MoveWindow(process.MainWindowHandle, 0, 0, windowSize.Width, windowSize.Height, true);

但是这些都不起作用。 chrome 似乎做了一些不同的事情来防止窗口大小变得大于屏幕分辨率。使用 Firefox,我没有看到这种行为。


0
投票

根据我的经验,从网络驱动程序设置大小并不总是可靠的。 它可能仅将其应用于视口,或者可能会陷入其他问题(例如特定网络驱动程序的最小屏幕尺寸)。

参见https://w3c.github.io/webdriver/#dfn-set-window-rect

该规范不保证最终的窗口大小与所请求的大小完全匹配。特别是,该实现预计会限制大于物理屏幕尺寸或小于最小窗口尺寸的值。

我将尝试设置功能,看看是否有更好的效果。


0
投票

我的设备的屏幕分辨率低于测试预期的屏幕分辨率。

对我有用的解决方法:

options.EnableMobileEmulation(new ChromiumMobileEmulationDeviceSettings
{
   Height = 1080,
   Width = 1920,
   EnableTouchEvents = false,
   UserAgent = "Responsive"
});

0
投票

在 Python 中,您可以使用 Selenium 设置 Chrome 的窗口大小,如下所示。 *

-window-size
window-size
也有效:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--window-size=1024,768")
driver = webdriver.Chrome(options=options)

在Python中,你也可以根据thd doc使用下面的代码来完成:

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_window_size(1024, 768)

*我的回答解释了更多。

© www.soinside.com 2019 - 2024. All rights reserved.