Come ingrandire la finestra del browser in Selenium WebDriver (Selenium 2) utilizzando C #?


Risposte:


38

C'è un problema in sospeso per aggiungere questa funzionalità a WebDriver, che può essere rintracciato qui: http://code.google.com/p/selenium/issues/detail?id=174

Una soluzione alternativa sarebbe utilizzare il JavascriptExectorseguente:

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

13
Due cose: 1) Se ti interessa ciò che è visibile, probabilmente vuoi spostare la finestra sull'origine prima di renderla a schermo intero. 2) Se le dimensioni dello schermo sono variabili, puoi ottenerle in fase di esecuzione con l' screenoggetto javascript . Tenendo conto di questi punti, probabilmente il javascript dovrebbe essere:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz,

4
Nota che c'è un problema nello spostare la finestra su (0,0) in Firefox su Mac. Sembra non rappresentare correttamente la sua regione di intestazione. Spostare la finestra su (0,1) sembra effettivamente spostarla su (0,0), quindi un bug aiuta un altro. A quel punto puoi massimizzare correttamente la finestra.
nirvdrum,

Dovrebbe essere l'istanza di JavascriptExecutor IJavaScriptExecutor
TuGordoBello

160

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

Funziona con IE e Firefox. Chrome non funziona. È stato inviato un bug per questo sul progetto ChromeDriver.

Nel frattempo, il giro per Chrome è quello di implementare ciò che Joey V. e Coder323 hanno suggerito.

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

1
In questo modo per Firefox è l'unico che funziona, il javascript non fa nulla sul selenio 2.21
Sam Adamsh,

6
Per la distinzione tra maiuscole e minuscole Java => driver.manage (). Window (). Maxim ();
Janaaaa,

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

Bene. Dirò grazie :) funziona sul mio chromedriver.
Xin,

Sto usando FF53 con Selenium WebDriver 3.3.0. . driver.Manage () Window.Maximize (); funziona per me
Ripon Al Wasim il

37

Per IE e Firefox:

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

Per Chrome:

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

4
C # è così. . driver.Manage () Window.Maximize ();
Chris Hawkes,

. driver.manage () finestra () massimizzare ().; funziona anche per Chrome
Mosaad,

Grazie Chris, C # ha bisogno di metodi maiuscoli: questo. . driver.Manage () Window.Maximize ();
LA Guy 88

35

Giava

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

Pitone

driver.maximize_window()

Rubino

@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

15

Puoi usare qualcosa del genere (C #):

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

2
Purtroppo questo genera ed eccezione per ChromeDriver. Funziona bene per IE e Firefox però.
Bryan Allred,

L'uso di questo codice con Selenium C # dovrebbe funzionare correttamente poiché ChromeDriver è ora fornito da Google (anche se è per il selenio 3). In alternativa, puoi utilizzare la funzione di ingrandimento o semplicemente aggiungere il seguente argomento tramite le opzioni: "--start-maximized"
user1841243

15

Fase / scenario del test:
1. Aprire un browser e accedere a TestURL
2. Massimizzare il browser

Massimizza il browser con C # (.NET):

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

Massimizza il browser con Java:

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

Un altro modo di fare con Java:

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

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

Ciò non riesce in caso di contenitore docker cromato con errore java.awt.HeadlessException at sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Hai riscontrato questo problema prima?
vikramvi,

Ho provato con driver.Manage (). Window.Maximize (); in Selenium WebDriver C # su FF e ha funzionato bene. Non ho ancora provato con Chrome.
Ripon Al Wasim,

Questo ha funzionato per me, ma ho dovuto aggiungere driver.manage().window().setPosition(new Point(0,0));prima che l'ultima riga o la finestra non fosse nella posizione giusta.
Swanhella,

swanhella: Grazie per condividere questo
Ripon Al Wasim

8

Se stai utilizzando il driver Chrome puoi impostare le funzionalità

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

Usa semplicemente il Window.Maximize()comando

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

6

Il seguente frammento di codice Java Selenium ha funzionato per me:

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

Per Java:

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

Funzionerà in IE, Mozilla, Chrome


Come ho potuto impostare lo stesso per AndroidDriver ();
Karthick,

5

Ho avuto lo stesso problema, ma il problema può essere risolto utilizzando il seguente codice.

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

4

Per C #:

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

Per Java:

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

4

Abbiamo riscontrato un bug con le nuove librerie di driver. Puoi usare barattoli leggermente vecchi che sono in grado di gestire le nuove versioni del browser.

L'opzione generica principale è: -

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

Puoi anche usare altre opzioni per ingrandire la finestra del browser.

Esempio:-

Aggiungi l'opzione seguente e passala al driver: -

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

Il codice completo sarà simile al seguente: -

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

Prova questo su 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);
}

Ho usato il codice di Jim, ma leggermente modificato per l'uso con WatiN e C # per massimizzare il browser.


2

È possibile utilizzare l' emulazione del selenio in WebDriver:

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

1
Non hanno emulazione di selenio nella versione C # di webdriver. Almeno non ancora in 2.0a4 (appena visto che hanno rilasciato una nuova versione non l'ho ancora verificato). Tuttavia, il codice javascript sopra funziona alla grande.
Reflux,

E inoltre non supporta iPhoneDriver, ad esempio
Iulius Curt il

Sfortunatamente WebDriverBackedSelenium.windowMaximize () non funziona in Firefox 7 o Chrome 14 (sebbene funzioni in IE8). Dietro le quinte emette un comando Javascript window.resize (), ma entrambi questi browser lo ignorano. La soluzione di @ joey-v funziona per Chrome. E Luke Inman-Semerau ha pubblicato una soluzione qui ;
Andrew Newdigate,

2

Ho usato questa soluzione

            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

C'è una funzione che puoi usare per ingrandire la finestra in Python che è window_maximize (). Ed è così che lo sto usando. Spero che questo aiuti -

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

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

===> aggiungi anche un riferimento all'assembly .NET "System.Windows.Forms"

... l'unico problema è che non è posizionato correttamente
... si prega di commentare se è possibile correggere questo


1

Ecco cosa ha funzionato per me in C #, firefoxDriver è globale per la classe:

negli usi:

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

nel codice:

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

Per Webdriverjs (node.js), quanto segue massimizza la finestra di 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

Questa opzione va bene per me:

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

Questa opzione funziona su tutti i sistemi operativi.


1

La seguente riga di codice massimizzerebbe IE, Chrome e Mozilla

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

La precedente riga di codice e altre soluzioni alternative menzionate nel post non funzionavano per il browser NodeWebKit, quindi come soluzione alternativa ho dovuto utilizzare il codice C # nativo come indicato di seguito:

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

Quindi questa soluzione alternativa utilizza fondamentalmente "ALT + SPAZIO" per visualizzare il menu di azione del browser per selezionare "MASSIMA" dalle opzioni e premere "INVIO"


0

Attraverso il codice qui sotto sono in grado di ingrandire la finestra,

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

0

Questo funziona bene per me.

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

0

Ho provato molte delle risposte sopra, ma nessuna funziona bene. La mia versione del driver Chrome è 2.7 e Iam usando selenium-java vesion è 2.9.0. Il documento ufficiale suggerisce di usare:

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

Anche quanto sopra non funziona. Ho controllato il driver Chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Il protocollo Chrome Diver offre un metodo per massimizzare la finestra:

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

ma questo comando non è usato in selenium-java. Ciò significa che invii anche il comando a Chrome te stesso. Una volta fatto questo funziona.


0

Il driver Chrome supporta già:

Giava:

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

0

Per me, nessuna delle soluzioni sopra ha funzionato quando si lavora con Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - Voglio usare l'intero schermo
  • --start-maximized - viene ignorato
  • . driver.manage () finestra () massimizzare ().; - non funziona perché richiede alcune estensioni e non sono autorizzato a utilizzare le estensioni di Chrome

Sono riuscito a farlo funzionare usando InputSimulator :

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

0

Puoi provare con questo codice per ingrandire la finestra di Chrome.

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

WebDriver driver = new ChromeDriver(options);

Sebbene sia accettabile fornire risposte di solo codice, spesso è più utile per la comunità se puoi anche fornire una spiegazione del codice e aiutare le persone a capire perché risolve il problema. Ciò spesso riduce la quantità di domande di follow-up e può davvero aiutare i nuovi sviluppatori a comprendere i concetti sottostanti. Questo è particolarmente importante qui, dove ci sono già 27 altre risposte; vale la pena mettere in evidenza ciò che distingue il tuo approccio dalle risposte esistenti. Ti dispiacerebbe aggiornare la tua domanda con ulteriori dettagli?
Jeremy Caney,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.