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

83
我正在使用Selenium WebDriver进行自动化,而且我正在使用Chromedriver。
我注意到当我的驱动程序运行并打开Chrome浏览器时,它以奇怪的大小打开浏览器。 我尝试过修复它,但是徒劳无功。
有人知道我如何改变它吗?

你使用了哪种语言绑定?该API提供了方法来设置窗口大小,无论你使用哪个驱动程序(除非你在使用ChromeDriver时遇到特定问题,在这种情况下请提供更多信息)。这里有一篇文章,你可能想看看。如何使用Selenium WebDriver获取窗口大小、调整大小或最大化窗口 - Yi Zeng
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)

1
是的,在chromedriver中,最新的窗口调整大小存在错误,他们说在2.28版本中已经修复了,但我在那个版本中仍然遇到了错误。我最终使用命令行开关并将窗口大小作为参数传递。 - yeshwant singh
1
我注意到它似乎有一个最大尺寸,如果你超过了它,它会悄悄地恢复原状。(我的机器高度为1940像素,但似乎不同。) - Oddthinking
更新:我的评论对于Chrome是正确的,但对于Firefox则不是。 - Oddthinking
@Levon,对于我使用的 Selenium .NET,那种格式并没有起作用,而答案中提到的格式确实可以使用。 - User
1
chrome_options 现在已经过时,应该使用 "options",因此应为 driver = webdriver.Chrome(options=chrome_options) - David Faure
显示剩余2条评论

37

使用此选项设置自定义尺寸:

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

您可以根据自己的需求更改尺寸。


4
不适用于无界面 Chrome(版本60),但 @Yonatan Kiron 的答案有效。 - Illidan
@MiguelD'Alessio 很高兴能帮到你 :) - nitin chawda
Puppeteer解决方案:使用Chrome Devtools协议(CDP)会话中的 session.send('Browser.setWindowBounds',{windowId,bounds:{width:width,height:height}}) ,请参见我的另一个线程上的答案 - Zack Morris

16
#use chrome webdriver

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

这是webdriver chrome的链接:http://chromedriver.storage.googleapis.com/index.html?path=2.22/ - ayoub laaziz
1
这个对我有效。驱动程序版本为81.0.4044.138。 - LH7
也是赢家。谢谢老兄。 - James Walker

12

这是 @yonatan-kiron 的答案的C#版本,以及Selenium的using语句,取自他们的示例代码。

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

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

除此之外的所有答案都是非默认窗口大小,这意味着它仍然会启动丑陋+1。 - Ywapom

10

试一试

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

5
尝试使用driver.manage.window.maximize();来最大化窗口。

谢谢,但我不想要全屏,而是想按照自己的尺寸固定窗口大小。 由于某些原因,Chromedriver在打开浏览器时会固定窗口大小。 - Nimrod_G

4

RUBY


方法 #1

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

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

方法二

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

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

方法三

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

第四种方法

@driver.manage.window.maximize

方法 #5


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

方法六

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

方法 #7

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

2

以下是我使用无头浏览器的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


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);

这将在浏览器中全屏打开


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