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

132

Existe-t-il un moyen de maximiser la fenêtre du navigateur en utilisant WebDriver (Selenium 2) avec C #?

Reflux
la source
1
WebDriver ( code.google.com/p/selenium/?redir=1 ) vous permet essentiellement de tester des pages Web via du code.
Reflux
1
Selenium WebDriver est le successeur de Selenium RC
Ripon Al Wasim

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);");
}
Dave Hunt
la source
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);
bipinkarms
la source
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 )
Luis
la source
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
Prashanth Sams
la source
15

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

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

Utilisez simplement la Window.Maximize()commande

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

Pour Java:

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

Cela fonctionnera dans IE, Mozilla, Chrome

Ramaguru N
la source
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();
Skarki
la source
4

Pour C #:

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

Pour Java:

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

ParkerSuperstar
la source
2

Vous pouvez utiliser l' émulation Selenium dans WebDriver:

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

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

Cette option me convient:

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

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

Sagar007
la source
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»

spartiate
la source
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);
    };");
Rajagopal
la source
0

Cela fonctionne bien pour moi.

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

chevalier zhou
la source
0

Le pilote Chrome prend déjà en charge:

Java:

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