Como maximizar a janela do navegador no Selenium WebDriver (Selenium 2) usando C #?

132

Existe alguma maneira de maximizar a janela do navegador usando o WebDriver (Selenium 2) com C #?

Refluxo
fonte
1
O WebDriver ( code.google.com/p/selenium/?redir=1 ) basicamente permite que você teste páginas da web usando o código.
Refluxo
1
Selênio WebDriver é o sucessor do Selenium RC
Ripon Al Wasim

Respostas:

38

Há um problema pendente para adicionar essa funcionalidade ao WebDriver, que pode ser rastreado aqui: http://code.google.com/p/selenium/issues/detail?id=174

Uma solução alternativa seria usar o JavascriptExectorseguinte:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
Dave Hunt
fonte
13
Duas coisas: 1) Se você se importa com o que é visível, provavelmente deseja mover a janela para a origem antes de torná-la em tela cheia. 2) Se as dimensões da tela forem variáveis, é possível obtê-las em tempo de execução com o screenobjeto javascript . Tendo estes pontos em consideração o javascript provavelmente deve ser:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz
4
Observe que há um problema ao mover a janela para (0,0) no Firefox no Mac. Parece não levar em consideração sua região de cabeçalho corretamente. Mover a janela para (0,1) parece realmente movê-la para (0,0), portanto, um erro ajuda o outro. Nesse ponto, você pode maximizar a janela corretamente.
Nirvdrum 12/08/10
Deve ser JavascriptExecutor exemplo IJavaScriptExecutor
TuGordoBello
160

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

Isso funciona para o IE e Firefox. Chrome não funciona. Há um bug enviado para isso no projeto ChromeDriver.

Enquanto isso, a solução para o chrome é implementar o que Joey V. e Coder323 sugeriram.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
bipinkarms
fonte
1
Desta forma, para o Firefox é o único que funciona, o javascript does not que anythign em selênio 2,21
Sam Adamsh
6
Para Java que diferencia maiúsculas de minúsculas => driver.manage (). Window (). Maximize ();
Janaaaa
AttributeError: 'WebDriver' object has no attribute 'Manage'
Utilizador
Bem. Vou dizer obrigado :) ele funciona no meu chromedriver.
Xin
Estou usando o FF53 com o Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); funciona para mim
Ripon Al Wasim 27/03
36

Para IE e Firefox:

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

Para o Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
Luis
fonte
4
C # é assim. driver.Manage (). Window.Maximize ();
Chris Hawkes
driver.manage (). window (). maximize (); funciona para chrome também
mosaad 28/11
Obrigado Chris, C # precisa de métodos em maiúsculas: isso. driver.Manage (). Window.Maximize ();
LA Guy 88
35

Java

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

Pitão

driver.maximize_window()

Rubi

@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
fonte
15

Você pode usar algo como isto (C #):

driver.Manage().Window.Size = new Size(1024, 768);
DrunkCoder
fonte
2
Infelizmente, isso gera uma exceção para o ChromeDriver. Funciona bem para IE e Firefox embora.
Bryan Allred 27/03
O uso desse código com o Selenium C # deve funcionar bem agora, já que o ChromeDriver agora é fornecido pelo Google (embora seja para o selênio 3). Alternativamente, você pode usar a função de maximização ou apenas adicionar o seguinte argumento via opções: "--start-maximizado"
user1841243
15

Etapa / cenário do teste:
1. Abra um navegador e navegue até TestURL
2. Maximize o navegador

Maximize o navegador com C # (.NET):

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

Maximize o navegador com Java:

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

Outra maneira de fazer com 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
fonte
Isso falha no caso de contêiner do docker chrome com o erro java.awt.HeadlessException em sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Você já encontrou esse problema antes?
vikramvi
Eu tentei com driver.Manage (). Window.Maximize (); no Selenium WebDriver C # no FF e funcionou bem. Ainda não tentei com o Chrome.
Ripon Al Wasim
Isso funcionou para mim, mas eu tive que adicionar driver.manage().window().setPosition(new Point(0,0));antes da última linha ou a janela não estaria na posição correta.
swanhella
swanhella: Graças a partilhar este
Ripon Al Wasim
8

Se você estiver usando o Driver Chrome, poderá definir os recursos

    var capabilities = new DesiredCapabilities();

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

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

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

Basta usar o Window.Maximize()comando

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

O seguinte snippet de código Java Selenium funcionou para mim:

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

Para Java:

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

Funcionará no IE, Mozilla, Chrome

Ramaguru N
fonte
Como eu poderia definir o mesmo para AndroidDriver ();
Karthick
5

Eu tive o mesmo problema, mas o problema pode ser resolvido usando o seguinte código.

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

Para C #:

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

Para Java:

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

Observamos erros nas novas bibliotecas de drivers. Você pode usar frascos levemente antigos, capazes de lidar com novas versões de navegadores.

A principal opção genérica é: -

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

Você também pode usar outra opção para maximizar a janela do navegador.

Exemplo:-

Adicione a opção abaixo e passe-a para o driver: -

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

O código completo será semelhante a seguir: -

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

Tente isso no 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
fonte
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);
}

Usei o código de Jim, mas um pouco modificado para uso com WatiN e C # para maximizar o navegador.

ParkerSuperstar
fonte
2

Você pode usar a emulação de selênio no WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Sergii Pozharov
fonte
1
Eles não têm emulação de selênio na versão C # do webdriver. Pelo menos ainda não no 2.0a4 (vi que eles lançaram uma nova versão ainda não fizeram o check-out). No entanto, o código javascript acima funciona muito bem.
Reflux
E também não suporta iPhoneDriver, por exemplo
Iulius Curt
Infelizmente, o WebDriverBackedSelenium.windowMaximize () não funciona no Firefox 7 ou Chrome 14 (embora funcione no IE8). Nos bastidores, emite um comando Javascript window.resize (), mas ambos os navegadores o ignoram. A solução do @ joey-v funciona no Chrome. E Luke Inman-Semerau postou uma solução aqui ;
Andrew Newdigate
2

Eu usei essa solução

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

Existe uma função que você pode usar para maximizar a janela no Python, que é window_maximize (). E é assim que eu estou usando. Espero que isso ajude -

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

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

===> também adicione uma referência ao assembly .NET "System.Windows.Forms"

... o único problema é que ele não está posicionado corretamente
... por favor, comente se você pode corrigir isso

MacGyver
fonte
1

Aqui está o que funcionou para mim em C #, o firefoxDriver é global para a classe:

nos usos:

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

no 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
fonte
1

Para Webdriverjs (node.js), o seguinte maximiza a janela do 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
fonte
1

Esta opção é boa para mim:

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

Esta opção funciona em todos os sistemas operacionais.

Sagar007
fonte
1

A linha de código abaixo maximizaria o IE, Chrome e Mozilla

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

A linha de código acima e outras soluções alternativas mencionadas na postagem não funcionaram para o navegador NodeWebKit; portanto, como solução alternativa, tive que usar o código C # nativo, conforme mencionado abaixo:

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

Portanto, essa solução alternativa basicamente usa "ALT + ESPAÇO" para abrir o menu de ação do navegador e selecionar "MAXIMIZE" nas opções e pressiona "ENTER".

espartano
fonte
0

Através do código abaixo, eu sou capaz de maximizar a janela,

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

Isso está funcionando bem para mim.

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

Eu tentei muitas das respostas acima, mas nenhuma funciona bem. Minha versão do driver do Chrome é 2.7 e o Iam usando a seleção de selênio-java é 2.9.0. O documento oficial sugere o uso de:

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

O acima também não funciona. Eu verifiquei o driver do chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

O protocolo chrome diver fornece um método para maximizar a janela:

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

mas este comando não é usado no selenium-java. Isso significa que você também envia o comando para se autodefinir. Depois que fiz isso, funciona.

cavaleiro zhou
fonte
0

O driver Chrome já suporta:

Java:

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

Para mim, nenhuma das soluções acima funcionou ao trabalhar com o Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - eu quero usar a tela inteira
  • --start-maximized - é ignorado
  • driver.manage (). window (). maximize (); - não funciona porque requer alguma extensão e não tenho permissão para usar extensões do Chrome

Consegui fazê-lo funcionar usando o InputSimulator :

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

Você pode tentar com esse código para maximizar a janela do Chrome.

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

WebDriver driver = new ChromeDriver(options);
Houssin Boulla
fonte
Embora seja aceitável fornecer respostas somente de código, geralmente é mais útil para a comunidade se você também pode fornecer uma explicação do código e ajudar as pessoas a entender por que ele resolve o problema. Isso geralmente reduz a quantidade de perguntas de acompanhamento e pode realmente ajudar os novos desenvolvedores a entender os conceitos subjacentes. Isso é especialmente importante aqui, onde já existem 27 outras respostas; vale a pena destacar o que diferencia sua abordagem das respostas existentes. Você se importaria de atualizar sua pergunta com detalhes adicionais?
Jeremy Caney