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


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

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

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 )

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

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

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

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

8

Po prostu użyj Window.Maximize()polecenia

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

6

W przypadku języka Java:

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

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


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

5

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

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

4

Dla C #:

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

W przypadku języka Java:

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

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

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ę.


2

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

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

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

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()

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ć


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

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

1

Ta opcja jest dla mnie dobra:

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

Ta opcja działa we wszystkich systemach operacyjnych.


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”


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

0

To działa dobrze dla mnie.

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

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.


0

Sterownik Chrome już obsługuje:

Jawa:

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

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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.