Comment maximiser la fenêtre du navigateur dans Selenium WebDriver (Selenium 2) en utilisant C #?


Réponses:


38

Il y a un problème en suspens pour ajouter cette fonctionnalité à WebDriver, qui peut être suivi ici: http://code.google.com/p/selenium/issues/detail?id=174

Une solution de contournement consiste à utiliser le JavascriptExectorcomme suit:

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

13
Deux choses: 1) Si vous vous souciez de ce qui est visible, vous voudrez probablement déplacer la fenêtre vers l'origine avant de la rendre en plein écran. 2) Si les dimensions de l'écran sont variables, vous pouvez les obtenir au moment de l'exécution avec l' screenobjet javascript . En tenant compte de ces points, le javascript devrait probablement être:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz

4
Notez qu'il y a un problème pour déplacer la fenêtre vers (0,0) dans Firefox sur Mac. Il semble ne pas prendre en compte correctement sa région d'en-tête. Cependant, déplacer la fenêtre vers (0,1) semble la déplacer vers (0,0), donc un bogue en aide un autre. À ce stade, vous pouvez agrandir correctement la fenêtre.
nirvdrum

Devrait être une instance de JavascriptExecutor IJavaScriptExecutor
TuGordoBello

160

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

Cela fonctionne pour IE et Firefox. Chrome ne fonctionne pas. Un bogue a été soumis à ce sujet sur le projet ChromeDriver.

Pendant ce temps, la solution pour le chrome consiste à implémenter ce que Joey V. et Coder323 ont suggéré.

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

1
De cette façon pour Firefox est la seule qui fonctionne, le javascript ne fait rien sur le sélénium 2.21
Sam Adamsh

6
Pour Java sensible à la casse => driver.manage (). Window (). Maximiser ();
Janaaaa

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

Bien. Je dirai merci :) cela fonctionne sur mon chromedriver.
Xin

J'utilise FF53 avec Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); travaille pour moi
Ripon Al Wasim

37

Pour IE et Firefox:

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

Pour Chrome:

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

4
C # c'est comme ça. driver.Manage (). Window.Maximize ();
Chris Hawkes

driver.manage (). window (). maximiser (); fonctionne également pour le chrome
mosaad

Merci Chris, C # a besoin de méthodes majuscules: ceci. driver.Manage (). Window.Maximize ();
LA Guy 88

35

Java

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

Python

driver.maximize_window()

Rubis

@driver.manage.window.maximize

OU

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

OU

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

15

Vous pouvez utiliser quelque chose comme ceci (C #):

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

2
Malheureusement, cela jette une exception pour ChromeDriver. Fonctionne bien pour IE et Firefox.
Bryan Allred

L'utilisation de ce code avec Selenium C # devrait fonctionner correctement maintenant puisque ChromeDriver est maintenant fourni par Google (bien que ce soit pour le sélénium 3). Vous pouvez également utiliser la fonction de maximisation ou simplement ajouter l'argument suivant via les options: "--start-maximized"
user1841243

15

Étape / scénario de test:
1. Ouvrez un navigateur et accédez à TestURL
2. Agrandissez le navigateur

Maximisez le navigateur avec C # (.NET):

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

Maximisez le navigateur avec Java:

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

Une autre façon de faire avec Java:

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

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

Cela échoue en cas de conteneur de docker chrome avec l'erreur java.awt.HeadlessException à sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Avez-vous déjà rencontré ce problème?
vikramvi

J'ai essayé avec driver.Manage (). Window.Maximize (); dans Selenium WebDriver C # sur FF et cela a bien fonctionné. Je n'ai pas encore essayé avec Chrome.
Ripon Al Wasim le

Cela a fonctionné pour moi mais j'ai dû ajouter driver.manage().window().setPosition(new Point(0,0));avant la dernière ligne ou la fenêtre ne serait pas dans la bonne position.
swanhella

swanhella: Merci de partager ceci
Ripon Al Wasim

8

Si vous utilisez le pilote Chrome, vous pouvez définir les capacités

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

Utilisez simplement la Window.Maximize()commande

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

6

L'extrait de code Selenium Java suivant a fonctionné pour moi:

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

Pour Java:

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

Cela fonctionnera dans IE, Mozilla, Chrome


Comment pourrais-je définir la même chose pour AndroidDriver ();
Karthick

5

J'ai eu le même problème, mais le problème peut être résolu en utilisant le code suivant.

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

4

Pour C #:

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

Pour Java:

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

4

Nous avons observé un bogue avec les nouvelles bibliothèques de pilotes. Vous pouvez utiliser des fichiers jar légèrement anciens capables de gérer de nouvelles versions de navigateurs.

La principale option générique est: -

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

Vous pouvez également utiliser une autre option pour agrandir la fenêtre du navigateur.

Exemple:-

Ajoutez l'option ci-dessous et transmettez-la au conducteur: -

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

Le code complet ressemblera à ci-dessous: -

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

OU

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

Essayez ceci en 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);
}

J'ai utilisé le code de Jim, mais légèrement modifié pour une utilisation avec WatiN et C # pour maximiser le navigateur.


2

Vous pouvez utiliser l' émulation Selenium dans WebDriver:

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

1
Ils n'ont pas d'émulation Selenium dans la version C # de webdriver. Du moins pas encore en 2.0a4 (ils viennent de voir qu'ils ont publié une nouvelle version mais ne l'ont pas encore vérifiée). Cependant, le code javascript ci-dessus fonctionne très bien.
Reflux

Et il ne prend pas non plus en charge iPhoneDriver, par exemple
Iulius Curt

Malheureusement, WebDriverBackedSelenium.windowMaximize () ne fonctionne pas dans Firefox 7 ou Chrome 14 (bien que cela fonctionne dans IE8). En coulisse, il émet une commande Javascript window.resize (), mais ces deux navigateurs l'ignorent. La solution de @ joey-v fonctionne pour Chrome. Et Luke Inman-Semerau a publié une solution ici ;
Andrew Newdigate

2

J'ai utilisé cette solution

            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

Il existe une fonction que vous pouvez utiliser pour maximiser la fenêtre en Python qui est window_maximize (). Et voici comment je l'utilise. J'espère que cela aide -

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

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

===> ajouter également une référence à l'assembly .NET "System.Windows.Forms"

... le seul problème est qu'il n'est pas positionné correctement
... veuillez commenter si vous pouvez corriger cela


1

Voici ce qui a fonctionné pour moi en C #, firefoxDriver est global à la classe:

dans les utilisations:

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

dans le 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

Pour Webdriverjs (node.js), ce qui suit maximise la fenêtre de 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

Cette option me convient:

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

Cette option fonctionne sur tous les systèmes d'exploitation.


1

La ligne de code ci-dessous maximiserait IE, Chrome et Mozilla

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

La ligne de code ci-dessus et les autres solutions de contournement mentionnées dans l'article ne fonctionnaient pas pour le navigateur NodeWebKit, donc comme solution de contournement, j'ai dû utiliser le code C # natif comme mentionné ci-dessous:

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

Donc, cette solution de contournement utilise essentiellement «ALT + ESPACE» pour afficher le menu d'action du navigateur pour sélectionner «MAXIMISER» dans les options et appuie sur «ENTRÉE»


0

Grâce au code ci-dessous, je suis capable de maximiser la fenêtre,

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

0

Cela fonctionne bien pour moi.

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

0

J'ai essayé plusieurs des réponses ci-dessus, mais aucune ne fonctionne bien. Ma version de pilote chrome est 2.7 et Iam utilisant selenium-java vesion est 2.9.0. Le document officiel suggère d'utiliser:

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

Ce qui précède ne fonctionne pas non plus. J'ai vérifié le pilote Chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Le protocole Chrome Diver fournit une méthode pour maximiser la fenêtre:

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

mais cette commande n'est pas utilisée dans selenium-java. Cela signifie que vous envoyez vous-même la commande à Chrome. Une fois que j'ai fait cela, cela fonctionne.


0

Le pilote Chrome prend déjà en charge:

Java:

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

0

Pour moi, aucune des solutions ci-dessus ne fonctionnait lorsque je travaillais avec Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - Je veux utiliser tout l'écran
  • --start-maximized - il est ignoré
  • driver.manage (). window (). maximiser (); - ne fonctionne pas car il nécessite une extension et je ne suis pas autorisé à utiliser les extensions Chrome

J'ai réussi à le faire fonctionner en utilisant InputSimulator :

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

0

Vous pouvez essayer avec ce code pour maximiser la fenêtre de chrome.

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

WebDriver driver = new ChromeDriver(options);

Bien qu'il soit acceptable de fournir des réponses basées uniquement sur le code, il est souvent plus utile pour la communauté si vous pouvez également fournir une explication du code et aider les gens à comprendre pourquoi il résout le problème. Cela réduit souvent le nombre de questions de suivi et peut vraiment aider les nouveaux développeurs à comprendre les concepts sous-jacents. C'est particulièrement important ici, où il y a déjà 27 autres réponses; cela vaut la peine de préciser ce qui distingue votre approche des réponses existantes. Pourriez-vous mettre à jour votre question avec des détails supplémentaires?
Jeremy Caney
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.