如何在使用C#的Selenium WebDriver(Selenium 2)中最大化浏览器窗口?

157

有没有一种方法可以在使用C#的WebDriver(Selenium 2)中最大化浏览器窗口?


1
WebDriver (http://code.google.com/p/selenium/?redir=1) 基本上允许您通过代码测试网页。 - Reflux
1
Selenium WebDriver 是 Selenium RC 的继任者。 - Ripon Al Wasim
29个回答

186

driver.Manage().Window.Maximize();

这适用于IE和Firefox,但对于Chrome无效。在ChromeDriver项目中有已提交的错误报告。

同时,解决Chrome的方法是实现Joey V.和Coder323建议的方法。

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);

1
这种方式适用于Firefox是唯一有效的,JavaScript在Selenium 2.21上无效。 - Sam Adamsh
6
对于区分大小写的Java,请使用以下代码:driver.manage().window().maximize();。 - Janaaaa
好的,我会说谢谢 :) 它在我的chromedriver上运行。 - Xin
我正在使用带有Selenium WebDriver 3.3.0的FF53。driver.Manage().Window.Maximize(); 对我有效。 - Ripon Al Wasim
这个问题现在似乎已经在ChromeDriver中得到了修复,而无需添加--start-maximized参数。 - John Chesshir
显示剩余3条评论

61

Java

driver.manage().window().maximize();

Python

driver.maximize_window()

Ruby

@driver.manage.window.maximize

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

或者

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

45

对于IE和Firefox:

driver.manage().window().maximize();

对于Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )

7
C# 就是这样。driver.Manage().Window.Maximize(); 的意思是最大化浏览器窗口。 - Chris Hawkes
driver.manage().window().maximize(); 同样适用于 Chrome。 - mosaad
谢谢Chris,C#需要大写方法:this.driver.Manage().Window.Maximize(); - LA Guy 88

43

有一个未解决的问题需要将此功能添加到WebDriver中,可以在此处跟踪:http://code.google.com/p/selenium/issues/detail?id=174

一种解决方法是使用JavascriptExector,如下所示:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}

13
两个要点: 1)如果您关心可见内容,可能需要在将窗口全屏之前将其移动到原点位置。 2)如果屏幕尺寸是可变的,可以通过javascript screen 对象在运行时获取它们。考虑到这些要点,javascript代码可能是: window.moveTo(0,0); window.resizeTo(screen.width, screen.height); - Guildencrantz
4
请注意,在Mac上使用Firefox移动窗口到(0,0)存在问题。看起来它没有正确考虑标题栏的区域。然而,将窗口移动到(0,1)似乎实际上会将其移动到(0,0),所以一个错误修复了另一个错误。在此之后,您可以正确地最大化窗口。 - nirvdrum
应该是JavascriptExecutor实例IJavaScriptExecutor。 - TuGordoBello

20

测试步骤/场景:
1. 打开浏览器并导航到TestURL
2. 最大化浏览器

使用C# (.NET)最大化浏览器:

driver.Manage().Window.Maximize();

使用Java最大化浏览器:

driver.manage().window().maximize();

另一种使用Java的方法:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenResolution = new Dimension((int) 
                    toolkit.getScreenSize().getWidth(), (int) 
                    toolkit.getScreenSize().getHeight());

driver.manage().window().setSize(screenResolution);

这在Chrome Docker容器中失败,出现错误java.awt.HeadlessException,位于sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:284)。你之前遇到过这个问题吗? - vikramvi
我在Selenium WebDriver C#中尝试使用driver.Manage().Window.Maximize()在FF上运行,效果很好。但我还没有在Chrome上尝试过。 - Ripon Al Wasim
这对我有用,但我必须在最后一行之前添加 driver.manage().window().setPosition(new Point(0,0));,否则窗口位置不正确。 - swanhella
swanhella:感谢分享这个。 - Ripon Al Wasim
另一种使用Java的方法:在我的情况下,Selenium没有截取整个屏幕,设置大小解决了问题,这帮了我很多。 - Jeffrey

15

你可以使用以下代码(C#):

driver.Manage().Window.Size = new Size(1024, 768);

2
不幸的是,这会对ChromeDriver抛出异常。但是对于IE和Firefox正常工作。 - Bryan Allred
现在使用 Selenium C#,这段代码应该可以正常工作了,因为 ChromeDriver 现在由 Google 提供(尽管是针对 Selenium 3)。或者,您可以使用 maximize 函数,或通过选项添加以下参数:"--start-maximized"。 - user1841243

8

只需使用Window.Maximize()命令即可。

WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();  

8
如果您正在使用Chrome Driver,您可以设置功能。
    var capabilities = new DesiredCapabilities();

    var switches = new List<string>
                       {
                           "--start-maximized"
                       };

    capabilities.SetCapability("chrome.switches", switches);

    new ChromeDriver(chromedriver_path, capabilities);

6
以下 Selenium Java 代码片段适用于我:
driver.manage().window().setPosition(new Point(0,0));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Dimension dim = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setSize(dim);

6

对于Java:

driver.manage().window().maximize();

它可以在IE、Mozilla和Chrome中正常工作。


我该如何为AndroidDriver()设置相同的内容? - Karthick

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