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.