Як максимально збільшити вікно браузера в Selenium WebDriver (Selenium 2) за допомогою C #?


132

Чи є спосіб збільшити вікно браузера за допомогою WebDriver (Selenium 2) за допомогою C #?


1
WebDriver ( code.google.com/p/selenium/?redir=1 ) в основному дозволяє перевірити веб-сторінки, хоча код.
Рефлюкс

1
Selenium WebDriver є спадкоємцем Selenium RC
Ripon Al Wasim

Відповіді:


38

Існує неабияка проблема, щоб додати цю функціональність до WebDriver, яку можна відстежувати тут: http://code.google.com/p/selenium/isissue/detail?id=174

Приблизним рішенням буде використання JavascriptExectorнаступного:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}

13
Дві речі: 1) Якщо вам все одно, що видно, ви, ймовірно, хочете перенести вікно в початкове місце, перш ніж зробити його на весь екран. 2) Якщо розміри екрана змінні, ви можете отримати їх під час виконання screenоб'єкта javascript . Враховуючи ці моменти, можливо, JavaScript повинен бути таким:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz

4
Зауважте, що у Firefox на Mac існує проблема з переміщенням вікна до (0,0). Схоже, неправильно відображається область заголовка. Переміщення вікна на (0,1), здається, фактично переміщує його до (0,0), тому одна помилка допомагає іншій. У цей момент ви можете максимально збільшити вікно.
nirvdrum

Має бути екземпляр JavascriptExecutor IJavaScriptExecutor
TuGordoBello

160

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

Це працює для IE та Firefox. Chrome не працює. У цьому проекті ChromeDriver подано помилку.

Тим часом вирішення проблеми хрому - це реалізація того, що запропонували Джої В. та Кодер323.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);

1
Цей спосіб для firefox - єдиний, що працює, javascript не робить нічого, що стосується селену 2.21
Сем Адамш,

6
Для регістру Java => driver.manage (). Window (). Maximize ();
Janaaaa

AttributeError: 'WebDriver' object has no attribute 'Manage'
Користувач

Ну. Я скажу спасибі :) це працює на моєму хромодрузі.
Сінь

Я використовую FF53 з Selenium WebDriver 3.3.0. driver.Manage (). window.Maximize (); працює для мене
Ріпон Аль Васім

37

Для IE та Firefox:

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

Для Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )

4
C # це так. driver.Manage (). window.Maximize ();
Кріс Хоукс

driver.manage (). window (). максимізувати (); працює і для хрому
мозаад

Дякую, Крис, C # потрібні великі методи: це. driver.Manage (). window.Maximize ();
LA Guy 88

35

Java

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

Пітон

driver.maximize_window()

Рубін

@driver.manage.window.maximize

АБО

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

АБО

target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size

15

Ви можете використовувати щось подібне (C #):

driver.Manage().Window.Size = new Size(1024, 768);

2
На жаль, це і є винятком для ChromeDriver. Хоча добре працює для IE та Firefox.
Брайан Аллред

Використання цього коду з Selenium C # має працювати нормально, оскільки ChromeDriver зараз надається Google (хоча це для селену 3). Крім того, ви можете використовувати функцію максимізації або просто додати наступний аргумент за допомогою параметрів: "--start-maximized"
користувач1841243

15

Крок / сценарій тесту:
1. Відкрийте браузер і перейдіть до TestURL
2. Максимізуйте браузер

Максимізуйте браузер за допомогою C # (.NET):

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

Максимізуйте браузер за допомогою Java:

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

Ще один спосіб зробити з Java:

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

driver.manage().window().setSize(screenResolution);

Це не вдається, якщо контейнер хромованого докера з помилкою java.awt.HeadlessException на sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Чи стикалися ви з цим питанням раніше?
vikramvi

Я спробував з driver.Manage (). Window.Maximize (); у Selenium WebDriver C # на FF, і він добре працював. Я ще не пробував із Chrome.
Ріпон Аль Васім

Це працювало для мене, але мені довелося додати, driver.manage().window().setPosition(new Point(0,0));перш ніж останній рядок або вікно не буде в потрібному положенні.
swanhella

swanhella: Дякую, щоб поділитися цим
Ripon Al Wasim

8

Якщо ви користуєтеся драйвером Chrome, ви можете встановити можливості

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

Просто використовуйте Window.Maximize()команду

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

6

Для мене працював наступний фрагмент коду Selenium Java:

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

Для Java:

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

Він буде працювати в IE, Mozilla, Chrome


Як я можу встановити те саме для AndroidDriver ();
Картік

5

У мене була така ж проблема, але проблему можна вирішити за допомогою наступного коду.

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


4

Ми помітили помилку з новими бібліотеками драйверів. Ви можете використовувати трохи старі банки, які вміють працювати з новими версіями браузерів.

Основний загальний варіант:

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

Ви також можете використовувати інший варіант для максимізації вікна браузера.

Приклад: -

Додайте нижче варіант і передайте його драйверу: -

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

Повний код буде виглядати нижче: -

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

АБО

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

Спробуйте це на сафарі: -

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

Я використовував код Джима, але трохи змінений для використання з WatiN і C # для максимального використання браузера.


2

Ви можете використовувати Selenium Emulation у WebDriver:

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

1
У них немає селенової емуляції у C # версії веб-драйвера. Принаймні ще не в 2.0a4 (тільки що побачив, що випустили нову версію, ще не перевірив її). Однак вищевказаний код JavaScript чудово працює.
Рефлюкс

І він також не підтримує iPhoneDriver, наприклад
Iulius Curt

На жаль, WebDriverBackedSelenium.windowMaximize () не працює в Firefox 7 або Chrome 14 (хоча це працює в IE8). За лаштунками він видає команду JavaScript window.resize (), але обидва ці браузери її ігнорують. @ joey-v працює для Chrome. І Лука Інман-Семерау розмістив рішення тут ;
Ендрю Ньюдігейт

2

Я використав це рішення

            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

Є функція, яку ви можете використовувати для максимізації вікна в Python, який є window_maximize (). І ось як я це використовую. Сподіваюся, це допомагає -

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

Клієнтські драйвери 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);

===> також додайте посилання на .NET збірку "System.Windows.Forms"

... Єдина проблема полягає в тому, що він розташований неправильно
... Будь ласка, прокоментуйте, чи можете ви це виправити


1

Ось що для мене працювало в C #, firefoxDriver є глобальним для класу:

при використанні:

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

в коді:

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

Для Webdriverjs (node.js) наступне максимізує хромове вікно.

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

Цей варіант для мене чудово:

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

Ця опція працює у всіх ОС.


1

Нижній рядок коду максимізує IE, Chrome та Mozilla

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

Вищенаведений рядок коду та інші способи вирішення, згадані у публікації, не працювали для браузера NodeWebKit, тому в якості вирішення мені довелося використовувати рідний код C #, як зазначено нижче:

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

Таким чином, це рішення в основному використовує "ALT + SPACE", щоб відкрити меню дій браузера, щоб вибрати "MAXIMIZE" з опцій та натискає "ENTER"


0

За допомогою наведеного нижче коду я маю змогу максимізувати вікно,

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

0

Це добре працює для мене.

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

0

Я спробував багато відповідей вище, але жодна не працює добре. Моя версія хромованого драйвера - 2,7, а Iam, що використовує selen-java vesion, - 2,9,0. Офіційний документ пропонує використовувати:

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

Сказане також не працює. Я перевірив драйвер хрому JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Протокол хромованого дайвера пропонує метод максимального збільшення вікна:

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

але ця команда не використовується в селені-Java. Це означає, що ви також відправляєте команду для хромування самостійно. Як тільки я це зробив, це працює.



0

Для мене жодне з вищезгаданих рішень не працювало під час роботи з веб-драйвером Selenium C # + Chrome:

  • window.resizeTo (1024, 768); - Я хочу використовувати весь екран
  • --start-maximized - це ігнорується
  • driver.manage (). window (). максимізувати (); - не працює, оскільки вимагає деякого розширення, і мені заборонено використовувати розширення Chrome

Мені вдалося змусити його працювати за допомогою InputSimulator :

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

0

Ви можете спробувати за допомогою цього коду для максимізації хромованого вікна.

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

WebDriver driver = new ChromeDriver(options);

Хоча прийнятно надавати відповіді лише для коду, це часто корисніше для спільноти, якщо ви також можете надати пояснення коду та допомогти людям зрозуміти, чому він вирішує проблему. Це часто зменшує кількість додаткових запитань і може допомогти новим розробникам зрозуміти основні поняття. Це особливо важливо тут, де вже є 27 інших відповідей; варто зателефонувати, що відрізняє ваш підхід від існуючих відповідей. Ви б не хотіли б оновити своє запитання додатковими подробицями?
Джеремі Кейні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.