Selenium развернуть окно браузера python
Следующий код для изменения размера окна хрома селена не работает:
Я также пробовал использовать параметры для установки размера окна при создании драйвера (и многое другое, кажется, комментарии ниже), но также не могу заставить его работать:
Я использую selenium 3.14.0, версию драйвера Chrome 72.0.3626.109 и работаю в фоновом / безголовом режиме: мне буквально нужно запускать свой код в фоновом режиме, что означает, что он запускается автоматически в фоновом режиме. Я думаю, что есть тонкая разница между безголовым, который при запуске связан с конкретным пользователем, и фоном, который тоже безголовый, но может не быть связан с конкретным пользователем и может иметь другие особенности - я начинаю думать, что это может быть частью моей проблемы.
Я хотел бы, чтобы драйвер Chrome работал, потому что firefox не работает в фоновом режиме (что мне нужно), и то есть это боль.
Я хочу понять это, потому что я не вижу элемент, который мне нужно щелкнуть, когда окно такое маленькое.
Я пробовал это: driver.execute_script ("arguments [0] .scrollIntoView ();", button2), где button2 - это скрытая кнопка внизу выпадающего списка меню, и это тоже не работает.
Вы щелкаете раскрывающийся список, чтобы открыть его, прежде чем пытаться щелкнуть нужный элемент? Окно должно прокрутиться для вас, как только элемент станет видимым. Если это не сработает, вы всегда можете щелкнуть элемент с помощью JS. Это не пользовательский сценарий (потому что пользователи не могут щелкать то, что они не видят), но если вы не пытаетесь автоматизировать пользовательский сценарий или действительно застряли без других вариантов, это должно сработать.
3 ответа
Немного непонятно, почему и где именно вы застряли. Возможно, дополнительный . , как в height = <>px. , создает хаос. Возможно, вместе с аргументом -headless я смогу установить / получить браузер Chrome Размер окна следующим образом:
ТЛ ; доктор
Вы найдете пару соответствующих обсуждений по размеру окна в:
Я пытаюсь увеличить и уменьшить масштаб Chrome (selenium webdriver) только с помощью клавиатуры. Я пытался .
но это не работает. Нужен ответ в python.
Я просто боролся с этим. Мне удалось найти то, что работает для меня, надеюсь, это работает для вас:
У 'масштаб' = какой масштаб вы хотите. (например, '67%')
- селен 3.6.0
- chromedriver 2.33
- версия Chrome 62.0.3202.75 (официальная сборка) (64-разрядная версия)
- macOS Sierra 10.12.6
Я пробовал способы (без использования CSS), которые люди предлагали в других вопросах в прошлом. Например, ответы на этот вопрос: Selenium webdriver увеличить/уменьшить содержимое страницы.
Итак, я подумал: если не с помощью ярлыков, что может быть другим способом сделать это?
идея состоит в том, чтобы использовать страницу" chrome://settings/", чтобы изменить масштаб:
хорошо, я знаю, например, из переход через Chrome: / / настройки по Selenium, что все настройки должны быть установлены в ChromeOptions.
С этот вопрос я заметил, что в список предпочтений единственный параметр (я думаю) может быть:
Я пытался, но безуспешно.
Я хочу повторить, что я знаю, что это не правильный подход (и это будет отличаться с разными версиями браузера), но он работает и, по крайней мере, был полезен для меня, чтобы понять, как войти в корневой элемент тени с селен.
следующий метод возвращает элементы внутри теневого корня:
это полезно, потому что в chrome://settings/ страница есть теневые корневые элементы.
чтобы сделать это, в моем браузере это путь:
EDIT
As предложил by @Florent B в комментариях, мы можем получить тот же результат прост с:
В этом руководстве вы узнаете, как увеличить, уменьшить или изменить размер браузера с помощью Selen Webdriver. Объясняется в различных сценариях с использованием метода maximize () и измерений для изменения размера браузера.
Вот что мы рассмотрим:
Зачем максимизировать браузер в Selenium Automation?
Элементы в веб-приложении могут не распознаваться селеном, если браузер не развернут и из-за этого происходит сбой фреймворка. Следовательно, максимизировать браузер является очень важной частью Selen Framework. Рекомендуется максимально использовать браузер при автоматизации любого веб-приложения. Когда пользователь выполняет среду селена или любой сценарий, браузер может не находиться в полноэкранном режиме, и вам необходимо развернуть браузер, чтобы просмотреть все элементы веб-приложения. Рекомендуется развернуть браузер в начале скрипта, чтобы скрипт успешно выполнялся без каких-либо ошибок.
Как развернуть браузер в Selenium
Чтобы максимизировать окно браузера, вам нужно вызвать метод maximize () интерфейса Window класса драйвера.
Вы можете настроить размер браузера в соответствии с требованиями сценария. Selenium Webdriver не предоставляет какого-либо метода минимизации браузера, такого прямого метода не существует. Вы должны использовать метод изменения размера, чтобы свернуть браузер.
Пример: изменение размера браузера с помощью веб-драйвера selenium
а) Селеновый сценарий с пояснениями.
Описание скрипта : В приведенном ниже скрипте Selenium показано изменение размера браузера с использованием инфраструктуры testNG, шаги сценария:
- Откройте браузер Chrome.
- Запустите сайт.
- Подождите несколько секунд, чтобы просмотреть действие изменения размера.
- Закройте браузер.
б) выходной анализ
Открыл браузер Chrome, изменил размеры браузера, подождал несколько секунд и закрыл браузер.
Пример: развернуть окно браузера с помощью веб-драйвера.
а) Селеновый сценарий с пояснениями.
Описание сценария: В приведенном ниже сценарии Selenium показано максимальное развертывание браузера с использованием инфраструктуры testNG, шаги сценария:
- Откройте браузер Chrome.
- Запустите сайт.
- Подождите несколько секунд, чтобы просмотреть максимально развернутое действие.
- Закройте браузер.
б) выходной анализ
Открыл браузер chrome, развернул браузер, подождал несколько секунд и закрыл браузер.
Пример: сверните окно браузера с помощью веб-драйвера.
а) Селеновый сценарий с пояснениями.
Описание скрипта : В приведенном ниже скрипте Selenium показано, как минимизировать браузер с использованием инфраструктуры testNG, шаги сценария:
- Откройте браузер Chrome.
- Запустите сайт.
- Подождите несколько секунд, чтобы просмотреть действие минимизации.
- Закройте браузер.
Примечание. Если пользователь хочет использовать браузер Firefox, ему необходимо установить свойство FirefoxDriver и создать объект FirefoxDriver вместо ChromeDriver во всех трех сценариях сценариев, описанных ниже:
б) выходной анализ
Открыл браузер chrome, свернул браузер, подождал несколько секунд и закрыл браузер.
WebDriver does not make the distinction between windows and tabs. If your site opens a new tab or window, Selenium will let you work with it using a window handle. Each window has a unique identifier which remains persistent in a single session. You can get the window handle of the current window by using:
Switching windows or tabs
Clicking a link which opens in a new window will focus the new window or tab on screen, but WebDriver will not know which window the Operating System considers active. To work with the new window you will need to switch to it. If you have only two tabs or windows open, and you know which window you start with, by the process of elimination you can loop over both windows or tabs that WebDriver can see, and switch to the one which is not the original.
However, Selenium 4 provides a new api NewWindow which creates a new tab (or) new window and automatically switches to it.
Create new window (or) new tab and switch
Creates a new window (or) tab and will focus the new window or tab on screen. You don’t need to switch to work with the new window (or) tab. If you have more than two windows (or) tabs opened other than the new window, you can loop over both windows or tabs that WebDriver can see, and switch to the one which is not the original.
Note: This feature works with Selenium 4 and later versions.
Closing a window or tab
When you are finished with a window or tab and it is not the last window or tab open in your browser, you should close it and switch back to the window you were using previously. Assuming you followed the code sample in the previous section you will have the previous window handle stored in a variable. Put this together and you will get:
Forgetting to switch back to another window handle after closing a window will leave WebDriver executing on the now closed page, and will trigger a No Such Window Exception. You must switch back to a valid window handle in order to continue execution.
Quitting the browser at the end of a session
When you are finished with the browser session you should call quit, instead of close:
- Quit will:
- Close all the windows and tabs associated with that WebDriver session
- Close the browser process
- Close the background driver process
- Notify Selenium Grid that the browser is no longer in use so it can be used by another session (if you are using Selenium Grid)
Failure to call quit will leave extra background processes and ports running on your machine which could cause you problems later.
Some test frameworks offer methods and annotations which you can hook into to tear down at the end of a test.
If not running WebDriver in a test context, you may consider using try / finally which is offered by most languages so that an exception will still clean up the WebDriver session.
Python’s WebDriver now supports the python context manager, which when using the with keyword can automatically quit the driver at the end of execution.
Window management
Screen resolution can impact how your web application renders, so WebDriver provides mechanisms for moving and resizing the browser window.
Это работает для IE и Firefox. Хром не работает. Для этого есть ошибка в проекте ChromeDriver.
Между тем, решение хрома - это реализовать то, что предлагали Джои В. и Coder323.
Этот способ для firefox - единственный, который работает, javascript не делает ничего для selenium 2.21
Для IE и Firefox:
Обходной путь - использовать JavascriptExector следующее:
Две вещи: 1) Если вам важно, что видно, вы, вероятно, захотите переместить окно в исходное положение, прежде чем делать его полноэкранным. 2) Если размеры экрана переменные, вы можете получить их во время выполнения с помощью screen объекта javascript . Принимая во внимание эти моменты, javascript, вероятно, должен быть: window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Обратите внимание, что есть проблема с перемещением окна в (0,0) в Firefox на Mac. Похоже, что он не учитывает правильно область заголовка. Однако перемещение окна в (0,1), похоже, фактически перемещает его в (0,0), поэтому одна ошибка помогает другой. На этом этапе вы можете правильно развернуть окно.
Шаг / сценарий теста:
1. Откройте браузер и перейдите к TestURL
2. Разверните браузер.Разверните браузер с помощью Java:
Другой способ сделать с Java:
Это не удается в случае контейнера Chrome Docker с ошибкой java.awt.HeadlessException в sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Сталкивались ли вы с этой проблемой раньше?
Это сработало для меня, но мне пришлось добавить driver.manage().window().setPosition(new Point(0,0)); перед последней строкой, иначе окно не будет в правильном положении.
К сожалению, это вызывает исключение для ChromeDriver. Тем не менее, отлично работает для IE и Firefox.
Если вы используете драйвер Chrome, вы можете установить возможности
Просто используйте Window.Maximize() команду
Он будет работать в IE, Mozilla, Chrome
У меня сработал следующий фрагмент кода Java Selenium:
У меня была такая же проблема, но ее можно решить, используя следующий код.
Мы наблюдали ошибку с новыми библиотеками драйверов. Вы можете использовать немного старые jar-файлы, которые могут работать с новыми версиями браузеров.
Основной универсальный вариант: -
Вы также можете использовать другой вариант для увеличения окна браузера.
Добавьте вариант ниже и передайте его водителю: -
Полный код будет выглядеть следующим образом: -
Попробуйте это на сафари: -
Вы можете использовать эмуляцию Selenium в WebDriver:
К сожалению, WebDriverBackedSelenium.windowMaximize () не работает в Firefox 7 или Chrome 14 (хотя он работает в IE8). За кулисами он выдает команду Javascript window.resize (), но оба этих браузера игнорируют ее. Решение @joey-v работает для Chrome. И Люк Инман-Semerau разместил решение здесь ;
Я использовал это решение
Существует функция, которую вы можете использовать для развертывания окна в Python, это window_maximize (). И вот как я его использую. Надеюсь, это поможет .
===> также добавьте ссылку на сборку .NET "System.Windows.Forms"
Для Webdriverjs (node.js) следующее расширяет окно Chrome.
Мне подходит такой вариант:
Эта опция работает на всех ОС.
Приведенная ниже строка кода максимизирует IE, Chrome и Mozilla.
Таким образом, этот обходной путь в основном использует "ALT + ПРОБЕЛ", чтобы вызвать меню действий браузера, чтобы выбрать "МАКСИМИЗИРОВАТЬ" из опций и нажмите "ВВОД".
С помощью приведенного ниже кода я могу развернуть окно до максимума,
У меня это нормально работает.
Протокол chrome diver предоставляет способ увеличения окна:
но эта команда не используется в selenium-java. Это означает, что вы также отправляете команду в Chrome самостоятельно. Как только я это сделал, все заработало.
Драйвер Chrome уже поддерживает:
- window.resizeTo (1024, 768); - Я хочу использовать весь экран
- --start-maximized - игнорируется
- driver.manage (). window (). maximize (); - не работает, потому что для этого требуется какое-то расширение, и мне не разрешено использовать расширения Chrome
Мне удалось заставить его работать с помощью InputSimulator :
Вы можете попробовать с помощью этого кода увеличить окно Chrome до максимума.
Читайте также: