Wie maximiere ich das Browserfenster in Selenium WebDriver (Selenium 2) mit C #?


Antworten:


39

Es gibt ein offenes Problem beim Hinzufügen dieser Funktionalität zu WebDriver, das hier verfolgt werden kann: http://code.google.com/p/selenium/issues/detail?id=174

Eine Problemumgehung wäre, JavascriptExectorFolgendes zu verwenden:

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

13
Zwei Dinge: 1) Wenn Sie sich darum kümmern, was sichtbar ist, möchten Sie das Fenster wahrscheinlich zum Ursprung verschieben, bevor Sie es im Vollbildmodus erstellen. 2) Wenn die Bildschirmabmessungen variabel sind, können Sie sie zur Laufzeit mit dem Javascript- screenObjekt abrufen . Unter Berücksichtigung dieser Punkte sollte das Javascript wahrscheinlich sein:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz

4
Beachten Sie, dass beim Verschieben des Fensters auf (0,0) in Firefox unter Mac ein Problem auftritt. Es scheint seinen Header-Bereich nicht richtig zu berücksichtigen. Das Verschieben des Fensters nach (0,1) scheint es jedoch tatsächlich nach (0,0) zu verschieben, sodass ein Fehler einem anderen hilft. An diesem Punkt können Sie das Fenster richtig maximieren.
Nirvdrum

Sollte JavascriptExecutor Instanz sein IJavaScriptExecutor
TuGordoBello

159

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

Dies funktioniert für IE und Firefox. Chrome funktioniert nicht. Hierfür wurde im ChromeDriver-Projekt ein Fehler gemeldet.

In der Zwischenzeit muss das Chrom umgesetzt werden, was Joey V. und Coder323 vorgeschlagen haben.

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

1
Dieser Weg für Firefox ist der einzige, der funktioniert, das Javascript macht nichts auf Selen 2.21
Sam Adamsh

6
Für Java mit Groß- und Kleinschreibung beachten => driver.manage (). Window (). Maxim ();
Janaaaa

AttributeError: 'WebDriver' object has no attribute 'Manage'
Benutzer

Gut. Ich werde mich bedanken :) es funktioniert auf meinem Chromedriver.
Xin

Ich verwende FF53 mit Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); arbeitet für mich
Ripon Al Wasim

36

Für IE und Firefox:

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

Für Chrome:

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

4
C # es ist so. driver.Manage (). Window.Maximize ();
Chris Hawkes

driver.manage (). window (). maxim (); funktioniert auch für Chrom
Mosaad

Danke Chris, C # braucht Großbuchstaben: dies. driver.Manage (). Window.Maximize ();
LA Guy 88

35

Java

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

Python

driver.maximize_window()

Rubin

@driver.manage.window.maximize

ODER

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

ODER

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

15

Sie können so etwas verwenden (C #):

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

2
Leider wirft dies eine Ausnahme für den ChromeDriver. Funktioniert aber gut für IE und Firefox.
Bryan Allred

Die Verwendung dieses Codes mit Selenium C # sollte jetzt einwandfrei funktionieren, da ChromeDriver jetzt von Google bereitgestellt wird (obwohl dies für Selenium 3 gilt). Alternativ können Sie die Maximierungsfunktion verwenden oder einfach das folgende Argument über Optionen hinzufügen: "--start-maximized"
user1841243

15

Testschritt / Szenario:
1. Öffnen Sie einen Browser und navigieren Sie zu TestURL.
2. Maximieren Sie den Browser

Maximieren Sie den Browser mit C # (.NET):

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

Maximieren Sie den Browser mit Java:

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

Ein anderer Weg, um mit Java zu tun:

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

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

Dies schlägt im Fall eines Chrome Docker-Containers mit dem Fehler java.awt.HeadlessException bei sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284) fehl. Haben Sie dieses Problem schon einmal erlebt?
Vikramvi

Ich habe es mit driver.Manage () versucht. Window.Maximize (); in Selenium WebDriver C # auf FF und es hat gut funktioniert. Ich habe es noch nicht mit Chrome versucht.
Ripon Al Wasim

Das hat bei mir funktioniert, aber ich musste hinzufügen, driver.manage().window().setPosition(new Point(0,0));bevor die letzte Zeile oder das Fenster nicht an der richtigen Position war.
Swanhella

Swanhella: Danke, dass du das geteilt hast
Ripon Al Wasim

8

Wenn Sie den Chrome-Treiber verwenden, können Sie die Funktionen festlegen

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

Verwenden Sie einfach den Window.Maximize()Befehl

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

6

Das folgende Selenium Java-Codefragment hat für mich funktioniert:

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

Für Java:

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

Es wird in IE, Mozilla, Chrome funktionieren


Wie könnte ich dasselbe für AndroidDriver () einstellen?
Karthick

5

Ich hatte das gleiche Problem, aber das Problem kann mit folgendem Code gelöst werden.

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

4

Für C #:

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

Für Java:

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

4

Wir haben einen Fehler mit neuen Treiberbibliotheken festgestellt. Sie können leicht alte Gläser verwenden, die neue Browserversionen verarbeiten können.

Die wichtigste generische Option ist: -

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

Sie können auch eine andere Option zum Maximieren des Browserfensters verwenden.

Beispiel:-

Fügen Sie die folgende Option hinzu und übergeben Sie sie an den Treiber: -

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

Der vollständige Code sieht wie folgt aus: -

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

ODER

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

Versuchen Sie dies auf einer 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);
}

Ich habe Jims Code verwendet, aber für die Verwendung mit WatiN und C # leicht modifiziert, um den Browser zu maximieren.


2

Sie können die Selenium-Emulation in WebDriver verwenden:

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

1
Sie haben keine Selenium-Emulation in der C # -Version von Webdriver. Zumindest noch nicht in 2.0a4 (habe gerade gesehen, dass sie eine neue Version veröffentlicht haben, habe sie aber noch nicht ausgecheckt). Der obige Javascript-Code funktioniert jedoch hervorragend.
Reflux

Und es unterstützt zum Beispiel auch nicht iPhoneDriver
Iulius Curt

Leider funktioniert WebDriverBackedSelenium.windowMaximize () in Firefox 7 oder Chrome 14 nicht (obwohl es in IE8 funktioniert). Hinter den Kulissen wird ein Javascript-Befehl window.resize () ausgegeben, der jedoch von beiden Browsern ignoriert wird. Die Lösung von @ joey-v funktioniert für Chrome. Und Luke Inman-Semerau veröffentlicht eine Lösung hier ;
Andrew Newdigate

2

Ich habe diese Lösung verwendet

            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

Es gibt eine Funktion, mit der Sie das Fenster in Python maximieren können: window_maximize (). Und so benutze ich es. Hoffentlich hilft das -

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 # -Clienttreiber:

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

===> Fügen Sie auch einen Verweis auf die .NET-Assembly "System.Windows.Forms" hinzu.

... das einzige Problem ist, dass es nicht richtig positioniert ist
... bitte kommentieren Sie, ob Sie dies korrigieren können


1

Folgendes hat in C # für mich funktioniert: FirefoxDriver ist für die Klasse global:

in den Verwendungen:

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

im Code:

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

Für Webdriverjs (node.js) maximiert das Folgende das Chrome-Fenster.

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

Diese Option ist in Ordnung für mich:

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

Diese Option funktioniert unter allen Betriebssystemen.


1

Die folgende Codezeile würde IE, Chrome und Mozilla maximieren

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

Die obige Codezeile und andere im Beitrag erwähnte Problemumgehungen funktionierten nicht für den NodeWebKit-Browser. Als Problemumgehung musste ich nativen C # -Code verwenden, wie unten erwähnt:

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

Diese Problemumgehung verwendet also grundsätzlich "ALT + LEERTASTE", um das Browser-Aktionsmenü aufzurufen und "MAXIMIEREN" aus den Optionen auszuwählen und "EINGABE" zu drücken.


0

Durch den folgenden Code kann ich das Fenster maximieren,

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

0

Das funktioniert gut für mich.

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

0

Ich habe viele der obigen Antworten ausprobiert, aber keine funktioniert gut. Meine Chrome-Treiberversion ist 2.7 und ich verwende Selen-Java-Version 2.9.0. Das offizielle Dokument schlägt vor, Folgendes zu verwenden:

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

Das obige funktioniert auch nicht. Ich habe den Chrome-Treiber überprüft JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Das Chrome Diver-Protokoll bietet eine Methode zur Maximierung des Fensters:

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

Dieser Befehl wird jedoch in Selen-Java nicht verwendet. Dies bedeutet, dass Sie den Befehl auch selbst an Chrome senden. Sobald ich das getan habe, funktioniert es.


0

Chrome-Treiber unterstützen bereits:

Java:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();

0

Für mich hat keine der oben genannten Lösungen bei der Arbeit mit Selenium Web Driver C # + Chrome funktioniert:

  • window.resizeTo (1024, 768); - Ich möchte den gesamten Bildschirm verwenden
  • --start-maximized - Es wird ignoriert
  • driver.manage (). window (). maxim (); - funktioniert nicht, da eine Erweiterung erforderlich ist und ich keine Chrome-Erweiterungen verwenden darf

Ich habe es mit InputSimulator zum Laufen gebracht :

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

0

Sie können mit diesem Code versuchen, das Chrome-Fenster zu maximieren.

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

WebDriver driver = new ChromeDriver(options);

Es ist zwar akzeptabel, nur Code-Antworten bereitzustellen, für die Community ist dies jedoch häufig nützlicher, wenn Sie auch eine Erklärung des Codes bereitstellen und den Benutzern helfen können, zu verstehen, warum das Problem dadurch behoben wird. Dies reduziert häufig die Anzahl der Folgefragen und kann neuen Entwicklern wirklich helfen, die zugrunde liegenden Konzepte zu verstehen. Das ist besonders wichtig hier, wo es bereits 27 andere Antworten gibt; Es lohnt sich herauszufinden, was Ihren Ansatz von den vorhandenen Antworten unterscheidet. Würde es Ihnen etwas ausmachen, Ihre Frage mit zusätzlichen Details zu aktualisieren?
Jeremy Caney
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.