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


Answers:


39

将此功能添加到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 2010年

4
请注意,在Mac上的Firefox中,将窗口移至(0,0)存在问题。它似乎没有正确说明其标头区域。虽然将窗口移至(0,1)似乎实际上将其移至(0,0),所以一个错误会帮助另一个错误。此时,您可以适当地最大化窗口。
nirvdrum

应该是JavascriptExecutor实例IJavaScriptExecutor
TuGordoBello

159

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没有做anythign硒2.21
山姆Adamsh

6
对于区分大小写的Java => driver.manage()。window()。maximize();
Janaaaa 2013年

AttributeError: 'WebDriver' object has no attribute 'Manage'
用户

好。我会说谢谢:)它确实适用于我的chromedriver。

我将FF53与Selenium WebDriver 3.3.0一起使用。driver.Manage()。Window.Maximize(); 为我工作
Ripon Al Wasim

36

对于IE和Firefox:

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

对于Chrome:

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

4
C#就是这样。driver.Manage()。Window.Maximize();
克里斯·霍克斯

driver.manage()。window()。maximize(); 也适用于铬
-mosaad

谢谢克里斯,C#需要大写的方法:这个。driver.Manage()。Window.Maximize();
LA Guy 88年

35

爪哇

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

蟒蛇

driver.maximize_window()

红宝石

@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

15

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

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

2
不幸的是,ChromeDriver抛出了异常。虽然适用于IE和Firefox。
Bryan Allred 2012年

由于Google现在提供了ChromeDriver(尽管它适用于硒3),因此现在可以将此代码与Selenium C#一起使用可以正常工作。或者,您可以使用最大化功能,也可以通过选项添加以下参数:“ --start-maximized”
user1841243

15

测试步骤/场景:
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容器在sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:284)上出现错误java.awt.HeadlessException,则失败。您以前遇到过这个问题吗?
vikramvi '16

我尝试使用driver.Manage()。Window.Maximize(); 在FF上的Selenium WebDriver C#中运行良好。我尚未尝试使用Chrome。
Ripon Al Wasim

这对我有用,但是我必须driver.manage().window().setPosition(new Point(0,0));在最后一行之前添加,否则窗口将不在正确的位置。
swanhella

swanhella:感谢分享这
里彭铝瓦西姆

8

如果您使用的是Chrome驱动程序,则可以设置功能

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

只需使用Window.Maximize()命令

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

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

5

对于Java:

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

它将在IE,Mozilla,Chrome中运行


我如何为AndroidDriver()设置相同的值;
卡西克2014年

5

我遇到了同样的问题,但是可以通过使用以下代码来解决该问题。

driver.manage().window().fullscreen();


4

我们已经观察到新驱动程序库的错误。您可以使用稍旧的jar,这些jar可以处理新的浏览器版本。

主要的通用选项是:

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

您还可以使用其他选项来最大化浏览器窗口。

例:-

添加以下选项并将其传递给驱动程序:-

    chromeOptions.addArguments("--start-maximized");

完整的代码如下所示:-

System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
driver = new ChromeDriver(chromeOptions);

要么

Toolkit toolkit = Toolkit.getDefaultToolkit();
int Width = (int) toolkit.getScreenSize().getWidth();
int Height = (int)toolkit.getScreenSize().getHeight();
//For Dimension class, Import following library "org.openqa.selenium.Dimension"  
driver.manage().window().setSize(new Dimension(Width,Height));
driver.get("https://google.com");

在Safari上尝试:-

JavascriptExecutor jse = (JavascriptExecutor)driver;
String screenWidth = jse.executeScript("return screen.availWidth").toString();
String screenHeight = jse.executeScript("return screen.availHeight").toString();
int intScreenWidth = Integer.parseInt(screenWidth);
int intScreenHeight = Integer.parseInt(screenHeight);
Dimension d = new Dimension(intScreenWidth, intScreenHeight);
driver.manage.window.setSize(d);

3
using System.Windows.Forms;
using System.Drawing;

public static void MaximizeBrowser(this IE myBrowser)
{
    myBrowser.SizeWindow(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}

我使用了Jim的代码,但是对WatiN和C#进行了一些修改,以最大化浏览器。


2

您可以在WebDriver中使用Selenium Emulation

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();

1
他们在C#版本的webdriver中没有Selenium Emulation。至少在2.0a4中还没有(只是看到他们发布了一个新版本,但尚未签出)。但是,上面的javascript代码效果很好。
回流

而且它也不支持iPhoneDriver,例如
Iulius Curt,

不幸的是,WebDriverBackedSelenium.windowMaximize()在Firefox 7或Chrome 14中不起作用(尽管在IE8中也可以)。它在后台发出了window.resize()Javascript命令,但是这两个浏览器都忽略了它。@ joey-v的解决方案适用于Chrome。Luke Inman-Semerau在这里发布了一个解决方案;
Andrew Newdigate

2

我用这个解决方案

            OpenQA.Selenium.Chrome.ChromeOptions chromeoptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            chromeoptions.AddArgument("--start-maximized");
            OpenQA.Selenium.Chrome.ChromeDriver chrome = new OpenQA.Selenium.Chrome.ChromeDriver(chromeoptions);

1

有一个函数可用于最大化Python中的窗口,即window_maximize()。这就是我的使用方式。希望对您有所帮助-

from selenium import selenium
sel = selenium('localhost', 4444, '*firefox', 'http://10.77.21.67/')
sel.start()
sel.open('/')
sel.wait_for_page_to_load(60000)
#sel.window_focus()
sel.window_maximize()
png = sel.capture_screenshot_to_string()
f = open('screenshot.png', 'wb')
f.write(png.decode('base64'))
f.close()
sel.stop()

1

C#客户端驱动程序:

driver = new FirefoxDriver(firefoxProfile);
driver.Manage().Window.Size = new System.Drawing.Size(System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width+10, System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height+10);

===>还添加对.NET程序集“ System.Windows.Forms”的引用

...唯一的问题是定位不正确
...如果可以纠正此问题,请发表评论


1

这是在C#中对我有用的东西,firefoxDriver对于该类是全局的:

在使用中:

using System.Drawing;
using System.Windows.Forms;

在代码中:

this.firefoxDriver = new FirefoxDriver();
this.firefoxDriver.Manage().Window.Position = new Point(0, 0);
this.firefoxDriver.Manage().Window.Size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);

1

对于Webdriverjs(node.js),以下内容可最大化chrome窗口。

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).build();
driver.manage().window().maximize();
driver.get('hxxp://localhost:8888');

1

这个选项对我来说很好:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-fullscreen");

此选项适用于所有操作系统。


1

下面的代码行将最大化IE,Chrome和Mozilla

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

上面提到的代码行和文章中提到的其他变通方法不适用于NodeWebKit浏览器,因此,作为变通方法,我必须使用本地C#代码,如下所述:

public static void MaximiseNWKBrowser(IWebDriver d)
        {
            var body = UICommon.GetElement(By.TagName("body"), d);
            body.Click();
            string alt = "%";
            string space = " ";
            string down = "{DOWN}";
            string enter = "{ENTER}";
            SendKeys.SendWait(alt + space);
            for(var i = 1; i <= 6; i++)
            {
                SendKeys.SendWait(down);
            }
            SendKeys.SendWait(enter);            
        }

因此,此解决方法基本上是使用“ ALT +空格”调出浏览器操作菜单,以从选项中选择“ MAXIMIZE”,然后按“ ENTER”


0

通过下面的代码,我可以最大化窗口,

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");

0

这对我来说很好。

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)

0

我尝试了以上许多答案,但都无法正常工作。我的chrome驱动程序版本是2.7,使用selenium-java vesion的Iam是2.9.0。官方文件建议使用:

var capabilities = new DesiredCapabilities();
var switches = new List<string>
                       {
                           "--start-maximized"
                       };
capabilities.SetCapability("chrome.switches", switches);    
new ChromeDriver(chromedriver_path, capabilities);

以上也不起作用。我检查了Chrome驱动程序JsonWireProtocolhttp : //code.google.com/p/selenium/wiki/JsonWireProtocol

chrome diver协议提供了一种最大化窗口的方法:

/session/:sessionId/window/:windowHandle/maximize,

但是在selenium-java中不使用此命令。这意味着您还可以自己发送命令给chrome。一旦执行此操作,它将起作用。



0

对我而言,使用Selenium Web Driver C#+ Chrome时,以上解决方案均无效:

  • window.resizeTo(1024,768); -我想使用整个屏幕
  • --start-maximized -它被忽略
  • driver.manage()。window()。maximize(); -无法使用,因为它需要一些扩展程序,并且我不允许使用Chrome扩展程序

我设法使用InputSimulator使它工作:

var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);

0

您可以尝试使用此代码来最大化chrome窗口。

ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");

WebDriver driver = new ChromeDriver(options);

提供仅代码的答案是可以接受的,但是如果您还可以提供代码说明并帮助人们理解为什么它可以解决问题,则对于社区来说通常更有用。这通常可以减少后续问题的数量,并可以真正帮助新开发人员理解基本概念。在这里,这一点尤为重要,那里已经有27个其他答案。值得一提的是您的方法与现有答案不同的地方。您介意使用其他详细信息更新您的问题吗?
Jeremy Caney
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.