Jak zmaksymalizować okno przeglądarki w Selenium WebDriver (Selenium 2) przy użyciu C #?

134

Czy istnieje sposób na zmaksymalizowanie okna przeglądarki przy użyciu WebDriver (Selenium 2) z C #?

Odpływ
źródło
1
WebDriver ( code.google.com/p/selenium/?redir=1 ) w zasadzie umożliwia testowanie stron internetowych za pomocą kodu.
Refluks
1
Selenium WebDriver jest następcą Selenium RC
Ripon Al Wasim

Odpowiedzi:

39

Wystąpił problem z dodaniem tej funkcji do WebDriver, który można śledzić tutaj: http://code.google.com/p/selenium/issues/detail?id=174

Aby obejść ten problem, należy użyć JavascriptExectornastępującego rozwiązania:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
Dave Hunt
źródło
13
Dwie rzeczy: 1) Jeśli zależy Ci na tym, co jest widoczne, prawdopodobnie zechcesz przenieść okno do początku, zanim zrobisz je na pełnym ekranie. 2) Jeśli wymiary ekranu są zmienne, możesz je uzyskać w czasie wykonywania za pomocą screenobiektu javascript . Biorąc pod uwagę te punkty, javascript powinien prawdopodobnie wyglądać następująco:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz
4
Zauważ, że występuje problem z przenoszeniem okna do (0,0) w przeglądarce Firefox na Macu. Wydaje się, że nie uwzględnia prawidłowo swojego regionu nagłówka. Przeniesienie okna do (0,1) wydaje się jednak przenosić je na (0,0), więc jeden błąd pomaga drugiemu. W tym momencie możesz odpowiednio zmaksymalizować okno.
nirvdrum
Powinna to być instancja JavascriptExecutor IJavaScriptExecutor
TuGordoBello
162

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

Działa to w IE i Firefox. Chrome nie działa. W projekcie ChromeDriver zgłoszono błąd dotyczący tego.

W międzyczasie, aby obejść chrome, zaimplementowano to, co sugerowali Joey V. i Coder323.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
bipinkarms
źródło
1
Ten sposób dla Firefoksa jest jedynym, który działa, javascript nie robi nic na selenie 2.21
Sam Adamsh
6
Dla Java z rozróżnianiem wielkości liter => driver.manage (). Window (). Maximize ();
Janaaaa
AttributeError: 'WebDriver' object has no attribute 'Manage'
Użytkownik
Dobrze. Powiem dzięki :) to działa na moim chromedriver.
Xin
Używam FF53 z Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); pracuje dla mnie
Ripon Al Wasim
38

W przeglądarkach IE i Firefox:

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

Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
Luis
źródło
5
C # to tak. driver.Manage (). Window.Maximize ();
Chris Hawkes
driver.manage (). window (). maximize (); działa również w przypadku chromu
mozaika
Dzięki Chris, C # potrzebuje metod wielkich liter: this. driver.Manage (). Window.Maximize ();
LA Guy 88
36

Jawa

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

Pyton

driver.maximize_window()

Rubin

@driver.manage.window.maximize

LUB

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

LUB

target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size
Prashanth Sams
źródło
16

Krok / scenariusz testowy:
1. Otwórz przeglądarkę i przejdź do TestURL
2. Zmaksymalizuj przeglądarkę

Zmaksymalizuj przeglądarkę za pomocą C # (.NET):

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

Zmaksymalizuj przeglądarkę dzięki Javie:

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

Inny sposób na zrobienie z Javą:

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

driver.manage().window().setSize(screenResolution);
Ripon Al Wasim
źródło
To kończy się niepowodzeniem w przypadku kontenera docker chrome z błędem java.awt.HeadlessException w sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Czy napotkałeś ten problem wcześniej?
vikramvi
Próbowałem z driver.Manage (). Window.Maximize (); w Selenium WebDriver C # na FF i działało dobrze. Nie próbowałem jeszcze z Chrome.
Ripon Al Wasim
To zadziałało dla mnie, ale musiałem dodać driver.manage().window().setPosition(new Point(0,0));przed ostatnią linią lub okno nie byłoby we właściwej pozycji.
swanhella
swanhella: Dzięki za udostępnienie tego
Ripon Al Wasim,
15

Możesz użyć czegoś takiego (C #):

driver.Manage().Window.Size = new Size(1024, 768);
DrunkCoder
źródło
2
Niestety to zgłasza wyjątek dla ChromeDriver. Działa jednak dobrze w IE i Firefox.
Bryan Allred,
Używanie tego kodu z Selenium C # powinno teraz działać dobrze, ponieważ ChromeDriver jest teraz dostarczany przez Google (chociaż jest dla Selenium 3). Alternatywnie możesz użyć funkcji maksymalizacji lub po prostu dodać następujący argument za pomocą opcji: "--start-maximized"
user1841243
8

Jeśli używasz sterownika Chrome, możesz ustawić jego możliwości

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);
Joey V.
źródło
8

Po prostu użyj Window.Maximize()polecenia

WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();  
iamsankalp89
źródło
6

W przypadku języka Java:

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

Będzie działać w IE, Mozilla, Chrome

Ramaguru N
źródło
Jak mogę ustawić to samo dla AndroidDriver ();
Karthick
6

Poniższy fragment kodu Selenium Java zadziałał dla mnie:

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
źródło
5

Miałem ten sam problem, ale problem można rozwiązać za pomocą następującego kodu.

driver.manage().window().fullscreen();
skarki
źródło
4

Dla C #:

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

W przypadku języka Java:

driver.manage().window().maximize();
Kumrun Nahar Keya
źródło
4

Zaobserwowaliśmy błąd w nowych bibliotekach sterowników. Możesz używać nieco starych słoików, które są w stanie obsłużyć nowe wersje przeglądarek.

Główną opcją ogólną jest: -

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

Możesz także użyć innej opcji, aby zmaksymalizować okno przeglądarki.

Przykład:-

Dodaj poniższą opcję i przekaż ją kierowcy: -

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

Pełny kod będzie wyglądał jak poniżej: -

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

LUB

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

Wypróbuj na 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
źródło
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);
}

Użyłem kodu Jima, ale nieznacznie zmodyfikowałem go do użytku z WatiN i C #, aby zmaksymalizować przeglądarkę.

ParkerSuperstar
źródło
2

Możesz użyć emulacji selenu w WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Sergii Pozharov
źródło
1
Nie mają emulacji selenu w wersji C # programu webdriver. Przynajmniej jeszcze nie w 2.0a4 (właśnie widzieliśmy, że wydali nową wersję, ale jeszcze jej nie sprawdzili). Jednak powyższy kod javascript działa świetnie.
Refluks
Nie obsługuje też iPhoneDriver, na przykład
Iulius Curt,
Niestety WebDriverBackedSelenium.windowMaximize () nie działa w przeglądarce Firefox 7 ani Chrome 14 (chociaż działa w IE8). Za kulisami wysyła polecenie JavaScript window.resize (), ale obie te przeglądarki ignorują je. Rozwiązanie @ joey-v działa w przeglądarce Chrome. A Luke Inman-Semerau zamieścił tutaj rozwiązanie ;
Andrew Newdigate
2

Skorzystałem z tego rozwiązania

            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
źródło
1

Istnieje funkcja, której możesz użyć do zmaksymalizowania okna w Pythonie, czyli window_maximize (). I tak właśnie go używam. Mam nadzieję, że to pomoże -

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
źródło
1

Sterowniki klienta 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);

===> dodaj także odniesienie do zestawu .NET „System.Windows.Forms”

... jedynym problemem jest to, że nie jest prawidłowo ustawiony
... proszę o komentarz, jeśli możesz to poprawić

MacGyver
źródło
1

Oto, co zadziałało dla mnie w C #, firefoxDriver jest globalny dla klasy:

w użytkach:

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

w kodzie:

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
źródło
1

W przypadku Webdriverjs (node.js) poniższe maksymalizuje okno 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
źródło
1

Ta opcja jest dla mnie dobra:

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

Ta opcja działa we wszystkich systemach operacyjnych.

Sagar007
źródło
1

Poniższy wiersz kodu zmaksymalizowałby IE, Chrome i Mozillę

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

Powyższy wiersz kodu i inne obejścia wspomniane w poście nie działały w przeglądarce NodeWebKit, więc jako obejście musiałem użyć natywnego kodu C #, jak wspomniano poniżej:

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

Więc to obejście w zasadzie wykorzystuje „ALT + SPACJA”, aby wywołać menu działań przeglądarki, wybrać „MAKSYMALIZUJ” z opcji i naciska „ENTER”

spartański
źródło
0

Dzięki poniższemu kodowi jestem w stanie zmaksymalizować okno,

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");
Rajagopal
źródło
0

To działa dobrze dla mnie.

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)
suresh.g
źródło
0

Wypróbowałem wiele z powyższych odpowiedzi, ale żadna nie działała dobrze. Moja wersja sterownika Chrome to 2.7, a używam wersji selenium-java 2.9.0. Oficjalny dokument sugeruje użycie:

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

Powyższe również nie działa. Sprawdziłem sterownik Chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Protokół chrome diver zapewnia metodę maksymalizacji okna:

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

ale to polecenie nie jest używane w selenium-java. Oznacza to, że sam wysyłasz polecenie do chrome. Kiedy to zrobiłem, to działa.

rycerz zhou
źródło
0

Sterownik Chrome już obsługuje:

Jawa:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Viktor Chmel
źródło
0

Dla mnie żadne z powyższych rozwiązań nie działało podczas pracy z Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - Chcę używać całego ekranu
  • --start-maximized - jest ignorowane
  • driver.manage (). window (). maximize (); - nie działa, ponieważ wymaga pewnego rozszerzenia i nie mogę używać rozszerzeń Chrome

Udało mi się go uruchomić za pomocą InputSimulator :

var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
Alexei
źródło
0

Możesz spróbować z tym kodem, aby zmaksymalizować okno chrome.

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

WebDriver driver = new ChromeDriver(options);
Houssin Boulla
źródło
Chociaż dopuszczalne jest udzielanie odpowiedzi obejmujących tylko kod, często jest to bardziej przydatne dla społeczności, jeśli możesz również podać wyjaśnienie kodu i pomóc ludziom zrozumieć, dlaczego rozwiązuje problem. To często zmniejsza liczbę pytań uzupełniających i może naprawdę pomóc nowym programistom zrozumieć podstawowe pojęcia. Jest to szczególnie ważne tutaj, gdzie jest już 27 innych odpowiedzi; warto wskazać, co odróżnia Twoje podejście od istniejących odpowiedzi. Czy mógłbyś zaktualizować swoje pytanie o dodatkowe szczegóły?
Jeremy Caney