¿Cómo maximizar la ventana del navegador en Selenium WebDriver (Selenium 2) usando C #?

Respuestas:

38

Hay un problema pendiente para agregar esta funcionalidad a WebDriver, que puede rastrearse aquí: http://code.google.com/p/selenium/issues/detail?id=174

Una solución alternativa sería utilizar lo JavascriptExectorsiguiente:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
Dave Hunt
fuente
13
Dos cosas: 1) Si le importa lo que está visible, probablemente quiera mover la ventana al origen antes de hacerla a pantalla completa. 2) Si las dimensiones de la pantalla son variables, puede obtenerlas en tiempo de ejecución con el screenobjeto javascript . Teniendo en cuenta estos puntos, el javascript probablemente debería ser:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz
44
Tenga en cuenta que hay un problema al mover la ventana a (0,0) en Firefox en Mac. Parece no tener en cuenta su región de encabezado correctamente. Sin embargo, mover la ventana a (0,1) parece moverlo a (0,0), por lo que un error ayuda a otro. En ese punto, puede maximizar la ventana correctamente.
nirvdrum
Debería ser una instancia de JavascriptExecutor IJavaScriptExecutor
TuGordoBello
160

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

Esto funciona para IE y Firefox. Chrome no funciona. Hay un error enviado para esto en el proyecto ChromeDriver.

Mientras tanto, la solución para Chrome es implementar lo que sugirieron Joey V. y Coder323.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
bipinkarms
fuente
1
De esta manera para Firefox es el único que funciona, el JavaScript no hace nada en el selenio 2.21
Sam Adamsh
66
Para mayúsculas y minúsculas Java => driver.manage (). Window (). Maximizar ();
Janaaaa
AttributeError: 'WebDriver' object has no attribute 'Manage'
Usuario
Bien. Diré gracias :) funciona en mi chromedriver.
Xin
Estoy usando FF53 con Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); funciona para mí
Ripon Al Wasim
37

Para IE y Firefox:

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

Para Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
Luis
fuente
44
C # es así. driver.Manage (). Window.Maximize ();
Chris Hawkes
driver.manage (). window (). maximizar (); también funciona para Chrome
mosaad
Gracias Chris, C # necesita métodos en mayúsculas: esto. driver.Manage (). Window.Maximize ();
LA Guy 88
35

Java

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

Pitón

driver.maximize_window()

Rubí

@driver.manage.window.maximize

O

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

O

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

Puede usar algo como esto (C #):

driver.Manage().Window.Size = new Size(1024, 768);
DrunkCoder
fuente
2
Desafortunadamente, esto arroja una excepción para ChromeDriver. Sin embargo, funciona bien para IE y Firefox.
Bryan Allred
Usar este código con Selenium C # debería funcionar bien ahora, ya que ChromeDriver ahora es proporcionado por Google (aunque es para el selenio 3). Alternativamente, podría usar la función maximizar o simplemente agregar el siguiente argumento a través de las opciones: "--start-maximized"
user1841243
15

Paso / escenario de prueba:
1. Abra un navegador y navegue hasta TestURL
2. Maximice el navegador

Maximice el navegador con C # (.NET):

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

Maximiza el navegador con Java:

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

Otra forma de hacer con 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
fuente
Esto falla en el caso del contenedor de acoplador de Chrome con error java.awt.HeadlessException en sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). ¿Encontró este problema antes?
vikramvi
Lo intenté con driver.Manage (). Window.Maximize (); en Selenium WebDriver C # en FF y funcionó bien. No probé con Chrome todavía.
Ripon Al Wasim
Esto funcionó para mí, pero tuve que agregar driver.manage().window().setPosition(new Point(0,0));antes de la última línea o la ventana no estaría en la posición correcta.
swanhella
swanhella: Gracias por compartir esto
Ripon Al Wasim
8

Si está utilizando el controlador de Chrome, puede configurar las capacidades

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);
Joey V.
fuente
7

Simplemente use el Window.Maximize()comando

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

El siguiente fragmento de código Selenium Java funcionó para mí:

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
fuente
5

Para Java:

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

Funcionará en IE, Mozilla, Chrome

Ramaguru N
fuente
¿Cómo podría establecer lo mismo para AndroidDriver ();
Karthick
5

Tuve el mismo problema, pero el problema se puede resolver utilizando el siguiente código.

driver.manage().window().fullscreen();
skarki
fuente
4

Para C #:

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

Para Java:

driver.manage().window().maximize();
Kumrun Nahar Keya
fuente
4

Hemos observado errores con las nuevas bibliotecas de controladores. Puede usar frascos un poco viejos que pueden manejar nuevas versiones de navegadores.

La opción genérica principal es: -

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

También puede usar otra opción para maximizar la ventana del navegador.

Ejemplo:-

Agregue la siguiente opción y páselo al controlador: -

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

El código completo se verá a continuación: -

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

O

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

Prueba esto 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
fuente
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);
}

Usé el código de Jim, pero lo modifiqué un poco para usarlo con WatiN y C # para maximizar el navegador.

ParkerSuperstar
fuente
2

Puede usar la emulación de selenio en WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Sergii Pozharov
fuente
1
No tienen Selenium Emulation en la versión C # de webdriver. Al menos todavía no en 2.0a4 (aunque acabo de ver que lanzaron una nueva versión, aún no la he probado). Sin embargo, el código JavaScript anterior funciona muy bien.
Reflujo
Y tampoco es compatible con iPhoneDriver, por ejemplo
Iulius Curt el
Lamentablemente, WebDriverBackedSelenium.windowMaximize () no funciona en Firefox 7 o Chrome 14 (aunque sí funciona en IE8). Detrás de escena emite un comando Javascript window.resize (), pero ambos navegadores lo ignoran. La solución de @ joey-v funciona para Chrome. Y Luke Inman-Semerau publicó una solución aquí ;
Andrew Newdigate
2

Utilicé esta solución

            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);
Codificador323
fuente
1

Hay una función que puede usar para maximizar la ventana en Python que es window_maximize (). Y así es como lo estoy usando. Espero que esto ayude.

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
fuente
1

Controladores de cliente 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);

===> también agregue una referencia al ensamblado .NET "System.Windows.Forms"

... el único problema es que no está colocado correctamente
... comente si puede corregir esto

MacGyver
fuente
1

Esto es lo que funcionó para mí en C #, firefoxDriver es global para la clase:

en los usos:

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

en el código:

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
fuente
1

Para Webdriverjs (node.js), lo siguiente maximiza la ventana 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
fuente
1

Esta opción está bien para mí:

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

Esta opción funciona en todos los sistemas operativos.

Sagar007
fuente
1

La siguiente línea de código maximizaría IE, Chrome y Mozilla

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

La línea de código anterior y otras soluciones alternativas mencionadas en la publicación no funcionaron para el navegador NodeWebKit, por lo que, como solución alternativa, tuve que usar el código C # nativo como se menciona a continuación:

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

Por lo tanto, esta solución utiliza básicamente "ALT + ESPACIO" para abrir el menú de acción del navegador para seleccionar "MAXIMIZAR" de las opciones y presiona "ENTRAR"

espartano
fuente
0

A través del siguiente código, puedo maximizar la ventana,

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

Esto está funcionando bien para mí.

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)
suresh.g
fuente
0

Intenté muchas de las respuestas anteriores, pero ninguna funciona bien. La versión de mi controlador de Chrome es 2.7 e Iam que usa la versión de selenium-java es 2.9.0. El documento oficial sugiere usar:

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

Lo anterior tampoco funciona. Revisé el controlador de Chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

El protocolo chrome diver proporciona un método para maximizar la ventana:

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

pero este comando no se usa en selenium-java. Esto significa que también envía el comando a Chrome usted mismo. Una vez que hice esto funciona.

caballero zhou
fuente
0

El controlador de Chrome ya es compatible:

Java:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Viktor Chmel
fuente
0

Para mí, ninguna de las soluciones anteriores funcionó al trabajar con Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768);- Quiero usar toda la pantalla
  • --start-maximized - se ignora
  • driver.manage (). window (). maximizar ();- no funciona porque requiere alguna extensión y no puedo usar extensiones de Chrome

Logré hacerlo funcionar usando InputSimulator :

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

Puede probar con este código para maximizar la ventana de Chrome.

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

WebDriver driver = new ChromeDriver(options);
Houssin Boulla
fuente
Si bien es aceptable proporcionar respuestas de solo código, a menudo es más útil para la comunidad si también puede proporcionar una explicación del código y ayudar a las personas a comprender por qué aborda el problema. Eso a menudo reduce la cantidad de preguntas de seguimiento y realmente puede ayudar a los nuevos desarrolladores a comprender los conceptos subyacentes. Eso es especialmente importante aquí, donde ya hay otras 27 respuestas; Vale la pena mencionar lo que distingue su enfoque de las respuestas existentes. ¿Te importaría actualizar tu pregunta con detalles adicionales?
Jeremy Caney