Czy istnieje sposób na zmaksymalizowanie okna przeglądarki przy użyciu WebDriver (Selenium 2) z C #?
c#
selenium
selenium-webdriver
Odpływ
źródło
źródło
Odpowiedzi:
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ć
JavascriptExector
następującego rozwiązania:public void resizeTest() { driver.Navigate().GoToUrl("http://www.example.com/"); ((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);"); }
źródło
screen
obiektu 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);
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);
źródło
AttributeError: 'WebDriver' object has no attribute 'Manage'
W przeglądarkach IE i Firefox:
Chrome:
ChromeOptions options = new ChromeOptions(); options.addArguments("--start-maximized"); driver = new ChromeDriver( options )
źródło
Jawa
Pyton
Rubin
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
źródło
Krok / scenariusz testowy:
1. Otwórz przeglądarkę i przejdź do TestURL
2. Zmaksymalizuj przeglądarkę
Zmaksymalizuj przeglądarkę za pomocą C # (.NET):
Zmaksymalizuj przeglądarkę dzięki Javie:
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);
źródło
driver.manage().window().setPosition(new Point(0,0));
przed ostatnią linią lub okno nie byłoby we właściwej pozycji.Możesz użyć czegoś takiego (C #):
driver.Manage().Window.Size = new Size(1024, 768);
źródło
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);
źródło
Po prostu użyj
Window.Maximize()
poleceniaWebDriver driver= new ChromeDriver() driver.Manage().Window.Maximize();
źródło
W przypadku języka Java:
Będzie działać w IE, Mozilla, Chrome
źródło
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);
źródło
Miałem ten sam problem, ale problem można rozwiązać za pomocą następującego kodu.
źródło
Dla C #:
W przypadku języka Java:
źródło
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: -
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);
źródło
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ę.
źródło
Możesz użyć emulacji selenu w WebDriver:
selenium = new WebDriverBackedSelenium(driver,url); selenium.windowMaximize();
źródło
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);
źródło
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()
źródło
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ć
źródło
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);
źródło
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');
źródło
Ta opcja jest dla mnie dobra:
ChromeOptions options = new ChromeOptions(); options.addArguments("start-fullscreen");
Ta opcja działa we wszystkich systemach operacyjnych.
źródło
Poniższy wiersz kodu zmaksymalizowałby IE, Chrome i Mozillę
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”
źródło
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); };");
źródło
To działa dobrze dla mnie.
Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)
źródło
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/JsonWireProtocolProtokół chrome diver zapewnia metodę maksymalizacji okna:
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.
źródło
Sterownik Chrome już obsługuje:
Jawa:
webDriver = new ChromeDriver(); webDriver.manage().window().maximize();
źródło
Dla mnie żadne z powyższych rozwiązań nie działało podczas pracy z Selenium Web Driver C # + Chrome:
--start-maximized
- jest ignorowaneUdało mi się go uruchomić za pomocą InputSimulator :
var inputSim = new InputSimulator(); // WinKey + UP = Maximize focused window inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
źródło
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);
źródło