Как развернуть окно браузера в Selenium WebDriver (Selenium 2) с помощью C #?


132

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


1
WebDriver ( code.google.com/p/selenium/?redir=1 ) в основном позволяет вам тестировать веб-страницы с помощью кода.
Reflux

1
Selenium WebDriver является преемником Selenium RC
Рипон Аль Васим

Ответы:


38

Есть нерешенная проблема с добавлением этой функции в WebDriver, которую можно отслеживать здесь: http://code.google.com/p/selenium/issues/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);
Гильденкранц

4
Обратите внимание, что есть проблема с перемещением окна в (0,0) в Firefox на Mac. Похоже, что он не учитывает правильно область заголовка. Однако перемещение окна в (0,1), похоже, фактически перемещает его в (0,0), поэтому одна ошибка помогает другой. На этом этапе вы можете правильно развернуть окно.
nirvdrum

Должен быть экземпляр JavascriptExecutor IJavaScriptExecutor
TuGordoBello

160

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

Это работает для IE и Firefox. Хром не работает. Для этого есть ошибка в проекте ChromeDriver.

Между тем, решение хрома - это реализовать то, что предлагали Джои В. и Coder323.

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 () окно () максимального (). работает и для хрома
mosaad

Спасибо, Крис, C # нужны методы в верхнем регистре: this. . driver.Manage () Window.Maximize ();
LA Guy 88

35

Ява

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 (хотя он предназначен для selenium 3). В качестве альтернативы вы можете использовать функцию максимизации или просто добавить следующий аргумент с помощью параметров: "--start-maximized"
user1841243 01

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

Это не удается в случае контейнера Chrome Docker с ошибкой 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 07

swanhella: Спасибо, что поделился этим
Рипон Аль Васим

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

У меня сработал следующий фрагмент кода Java Selenium:

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

5

У меня была такая же проблема, но ее можно решить, используя следующий код.

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


4

Мы наблюдали ошибку с новыми библиотеками драйверов. Вы можете использовать немного старые jar-файлы, которые могут работать с новыми версиями браузеров.

Основной универсальный вариант: -

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 в WebDriver:

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

1
У них нет эмуляции Selenium в версии webdriver для C #. По крайней мере, еще не в версии 2.0a4 (только что увидел, что они выпустили новую версию, но еще не проверил ее). Однако приведенный выше код javascript отлично работает.
Reflux

И это также не поддерживает iPhoneDriver, например
Iulius Curt

К сожалению, WebDriverBackedSelenium.windowMaximize () не работает в Firefox 7 или Chrome 14 (хотя он работает в IE8). За кулисами он выдает команду Javascript window.resize (), но оба этих браузера игнорируют ее. Решение @joey-v работает для Chrome. И Люк Инман-Semerau разместил решение здесь ;
Эндрю Ньюдигейт

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) следующее расширяет окно 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

Меня устраивает такой вариант:

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 + ПРОБЕЛ», чтобы вызвать меню действий браузера, чтобы выбрать «МАКСИМИЗИРОВАТЬ» из опций и нажмите «ВВОД».


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

Я пробовал многие из приведенных выше ответов, но ни один из них не работал. Моя версия драйвера Chrome - 2.7, а я использую версию selenium-java - 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

Протокол chrome diver предоставляет метод для увеличения окна:

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

но эта команда не используется в selenium-java. Это означает, что вы также отправляете команду в Chrome самостоятельно. Как только я это сделал, все заработало.



0

Для меня ни одно из вышеперечисленных решений не сработало при работе с Selenium Web Driver C # + Chrome:

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

Мне удалось заставить его работать с помощью InputSimulator :

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

0

Вы можете попробовать с помощью этого кода увеличить окно Chrome.

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.