Как скрыть окно Firefox (Selenium WebDriver)? - PullRequest
40 голосов
/ 20 марта 2011

Когда я выполняю несколько тестов одновременно, я не хочу, чтобы окно браузера Firefox оставалось видимым ... Я могу свернуть его, используя selenium.minimizeWindow(), но не хочу этого делать.

Есть ли способ скрыть окно Firefox? Я использую FireFox WebDriver.

Ответы [ 14 ]

61 голосов
/ 28 мая 2014

Python

Самый простой способ скрыть браузер - установить PhantomJS . Затем измените эту строку:

driver = webdriver.Firefox()

до:

driver = webdriver.PhantomJS()

Остальная часть вашего кода не нуждается в изменении, и браузер не открывается. В целях отладки используйте driver.save_screenshot('screen.png') на разных этапах кода или просто переключитесь на веб-драйвер Firefox.

В Windows вам нужно будет указать путь к phantomjs.exe:

driver = webdriver.PhantomJS('C:\phantomjs-1.9.7-windows\phantomjs.exe')

Java

Посмотрите на Ghost Driver: Как запустить GhostDriver с Selenium, используя Java


C#

Как скрыть FirefoxDriver (используя Selenium) или поместить его в форму C #

16 голосов
/ 01 апреля 2011

Наконец-то я нашел решение для тех, кто использует Windows Machine для запуска тестов любым методом.Ну, реализация не в Java, но вы можете сделать это очень легко.

Используйте AutoIt инструмент.Он имеет все возможности для обработки окон.Это бесплатный инструмент.

  1. Установить AutoIt: http://www.autoitscript.com/site/autoit/downloads/

  2. Откройте редактор и напишите ниже код для скрытия любого окна.

    AutoItSetOption("WinTitleMatchMode", 2)
    WinSetState("Title Of Your Window", "", @SW_HIDE) 
    
  3. Чтобы отобразить его, вы можете использовать следующую строку кода.

    AutoItSetOption("WinTitleMatchMode", 2)
    WinSetState("Title Of Your Window", "", @SW_SHOW)
    

    WinTitleMatchMode имеет различные параметры, которые можно использовать для соответствия названию Windows.

    1 = Match the title from the start (default)`
    2 = Match any substring in the title
    3 = Exact title match
    4 = Advanced mode, see Window Titles & Text (Advanced)
    

Итак, я сделал: я создал файл .exe небольшой программы и передал параметр в качестве аргумента командной строки, как показано ниже.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 \"" + "Mozilla Firefox" + "\"");

в HideNSeek.exe - у меня ниже AutoIt Code:

AutoItSetOption("WinTitleMatchMode", 1) 

if $CmdLine[0] > 0 Then
    if $CmdLine[1] == 0 Then
        WinSetState($CmdLine[2], "", @SW_HIDE)    
    ElseIf $CmdLine[1] == 1 Then
        WinSetState($CmdLine[2], "", @SW_SHOW)          
    Else    
    EndIf   
EndIf

$CmdLine[] - это массив, который будет иметь все параметры командной строки ...

$CmdLine[0] = number of Parameter
$CmdLine[1] = 1st Parameter after Exe Name 
...

Если в заголовке окна есть пробел, вы должны использовать двойные кавычки для передачи его в качестве параметра командной строки, как указано выше.

Ниже строки кода будет выполняться AutoIt exe иесли я передам '0' в 1-м параметре, он скроет окно, а если я передам '1' , то он покажет окна, соответствующие названию.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 \"" + "Mozilla Firefox" + "\"");

Надеюсь, это поможет вам.Спасибо!

11 голосов
/ 27 марта 2013

Я использовал xvfb для решения этой проблемы.

Сначала установите Xvfb:

# apt-get install xvfb

в Debian / Ubuntu; или

# yum install xorg-x11-Xvfb

на Fedora / RedHat. Затем выберите номер дисплея, который вряд ли когда-либо будет конфликтовать (даже если вы добавите реальный дисплей позже) - что-то высокое, как 99, должно подойти. Запустите Xvfb на этом экране с отключенным контролем доступа:

# Xvfb :99 -ac

Теперь вам нужно убедиться, что ваш дисплей установлен на 99, прежде чем запускать сервер Selenium (который сам запускает браузер). Самый простой способ сделать это - экспортировать DISPLAY =: 99 в среду для Selenium. Во-первых, убедитесь, что все работает из командной строки следующим образом:

$ export DISPLAY=:99
$ firefox

или просто

$ DISPLAY=:99 firefox

Ниже есть ссылка, которая помогла мне
http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

9 голосов
/ 13 июня 2018

Просто добавьте следующий код, который отлично работает.

import os
os.environ['MOZ_HEADLESS'] = '1'
driver = webdriver.Firefox()
6 голосов
/ 16 декабря 2017

Браузером PhantomJS по умолчанию является IE, хотя многие функции браузера там не работают.Если вы хотите открыть безголовое (скрытое) окно Firefox, вы можете использовать новую функцию Firefox 56 + .

С этой функцией вы можете получить драйвер headless, например:

System.setProperty("webdriver.gecko.driver", firefoxDriverExePath);
FirefoxOptions options = new FirefoxOptions();
options.addArguments("--headless");
FirefoxDriver driver = new FirefoxDriver(options);

Новые версии Chrome также имеют опцию headless.

3 голосов
/ 08 февраля 2018

Firefox имеет режим без головы. Если вы хотите использовать его, вам просто нужно установить его на бинарные опции, например так:

binary = FirefoxBinary("C:/Program Files/Mozilla Firefox/firefox.exe")
options = webdriver.FirefoxOptions()
# set headless mode on
options.set_headless(True) 
driver = webdriver.Firefox(firefox_binary=binary,options=options)
3 голосов
/ 21 марта 2011

Если вы используете Selenium RC или Remote WebDriver, вы можете запустить экземпляр браузера на удаленной или виртуальной машине. Это означает, что вам не нужно беспокоиться о том, чтобы скрыть окна браузера, поскольку они не будут запускаться на вашем локальном компьютере.

2 голосов
/ 10 декабря 2012

Если вы используете KDE Desktop, вы можете сделать так, чтобы Firefox Windows изначально открывался, свернув его.Это сделало мой день для меня в отношении этой проблемы.Просто сделайте следующее:

  1. Откройте Firefox
  2. Нажмите значок Firefox в верхнем левом углу строки меню -> Дополнительно -> Специальные настройки приложения ...
  3. Перейдите на вкладку «Размер и положение».
  4. Нажмите «Свернутый» и выберите «Применить изначально» (ДА).

Эти настройки будут применяться для нового Firefoxокна с этого момента, и вы больше не будете беспокоиться о всплывающих окнах при запуске тестов с Webdriver.

1 голос
/ 18 апреля 2019

просто добавьте их, и это будет работать, если вы используете Chrome, также полезно в Firefox

from selenium.webdriver.chrome.options import Options
'''option to make driver work background'''
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
1 голос
/ 24 ноября 2018

Just do (Python):

opts = webdriver.FirefoxOptions()
opts.headless = True
firefox = webdriver.Firefox(options=opts)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...