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

132

Gibt es eine Möglichkeit, das Browserfenster mit WebDriver (Selenium 2) mit C # zu maximieren?

Rückfluss
quelle
1
Mit WebDriver ( code.google.com/p/selenium/?redir=1 ) können Sie Webseiten grundsätzlich über Code testen.
Reflux
1
Selenium WebDriver ist der Nachfolger von Selenium RC
Ripon Al Wasim

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);");
}
Dave Hunt
quelle
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);
Bipinkarms
quelle
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 )
Luis
quelle
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
Prashanth Sams
quelle
15

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

driver.Manage().Window.Size = new Size(1024, 768);
DrunkCoder
quelle
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);
Ripon Al Wasim
quelle
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);
Joey V.
quelle
7

Verwenden Sie einfach den Window.Maximize()Befehl

WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();  
iamsankalp89
quelle
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);
KrishPrabakar
quelle
5

Für Java:

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

Es wird in IE, Mozilla, Chrome funktionieren

Ramaguru N.
quelle
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();
Skarki
quelle
4

Für C #:

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

Für Java:

driver.manage().window().maximize();
Kumrun Nahar Keya
quelle
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);
Shubham Jain
quelle
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.

ParkerSuperstar
quelle
2

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

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Sergii Pozharov
quelle
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);
Coder323
quelle
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()
fixxxer
quelle
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

MacGyver
quelle
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);
Jim Thompson
quelle
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');
Anup
quelle
1

Diese Option ist in Ordnung für mich:

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

Diese Option funktioniert unter allen Betriebssystemen.

Sagar007
quelle
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.

spartanisch
quelle
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);
    };");
Rajagopal
quelle
0

Das funktioniert gut für mich.

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)
suresh.g
quelle
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.

Ritter Zhou
quelle
0

Chrome-Treiber unterstützen bereits:

Java:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Viktor Chmel
quelle
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);
Alexei
quelle
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);
Houssin Boulla
quelle
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