Selenium поддерживает безголовое тестирование браузера? - PullRequest
67 голосов
/ 27 сентября 2011

В данный момент я смотрю на Selenium Server и, похоже, не замечаю драйвера, который поддерживает тестирование браузера без головы.

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

Может кто-нибудь просветить меня?Поддерживает ли Selenium безголовое тестирование браузера?

Ответы [ 12 ]

17 голосов
/ 06 февраля 2015

вам не нужно использовать PhantomJS в качестве альтернативы Selenium.Selenium включает класс веб-драйверов PhantomJS, который работает на платформе GhostDriver.Просто установите бинарный файл PhantomJS на свой компьютер.в Python вы можете использовать:

from selenium import webdriver
dr = webdriver.PhantomJS() 

и вуаля.

15 голосов
/ 27 сентября 2011

WebDriver API поддерживает HTMLUnit как браузер для вашего тестирования. Люди Ruby уже некоторое время используют Capybara для безголового тестирования селена, так что это определенно выполнимо.

10 голосов
/ 29 июля 2013

Я знаю, что это старый пост.Думаю, это поможет другим, кто ищет ответ.

Вы можете установить полноценный Firefox в любой дистрибутив Linux, используя XVFB.Это гарантирует, что ваше тестирование выполняется в реальном браузере.После настройки без подключения вы можете использовать веб-драйвер на свое усмотрение для подключения и запуска тестирования.

7 голосов
/ 30 июля 2012

Я заметил, что вы говорите, что использование кадрового буфера X не является настоящим безголовым решением, однако, для большинства, я думаю, это будет приемлемо.В дополнение к этому, эта услуга поможет вам в этом, если вы заинтересованы в этом в качестве решения.

6 голосов
/ 27 сентября 2011

Безголовые браузеры - плохая идея. Они проводят вам тестирование , но ничего похожего на то, что увидит реальный пользователь, и маскируют множество проблем, с которыми сталкиваются только настоящие браузеры. Вам бесконечно лучше использовать «возглавляемый» браузер (, т. Е. , любой, кроме HTMLUnit) в безголовой среде ( например, , Windows или Linux с XVFB).

1 голос
/ 13 марта 2018

Да. Selenium поддерживает безголовое тестирование браузеров, а также более быстрое и удобное выполнение большого количества тестовых случаев.

ChromeOptions cromeOptions = new ChromeOptions();

//Location of browser binary/.exe file
cromeOptions.setBinary("/usr/bin/google-chrome-stable");

cromeOptions.addArguments("--headless");
cromeOptions.addArguments("--no-sandbox");
cromeOptions.addArguments("--disable-gpu");
cromeOptions.addArguments("--window-size=1920,1080");

WebDriver webDriver = new ChromeDriver(cromeOptions);
0 голосов
/ 18 февраля 2019

Установите chromeDriver и google-chrome-stable версию на сервере Linux, где будут запущены тесты и добавьте те же двоичные файлы в ваш код.

фрагмент кода:

private static String driverPath = "/usr/bin/chromedriver";
static
{
    System.setProperty("webdriver.chrome.driver", driverPath);
    options = new ChromeOptions();
    options.setBinary("/usr/bin/google-chrome-stable");
    options.addArguments("headless");
    driver = new ChromeDriver(options);
}
0 голосов
/ 09 мая 2018

Да Selenium поддерживает автономное тестирование браузеров. Бесконечные браузеры работают быстрее, чем браузеры реального времени.

0 голосов
/ 18 марта 2018

Вот «современный ответ» о том, как использовать Selenium с xvfb и драйвером Firefox в среде Ubuntu Linux с Django / Python:

# install xvfb and Firefox driver
sudo su
apt-get install -y xvfb firefox
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
tar -x geckodriver -zf geckodriver-v0.19.1-linux64.tar.gz -O > 
/usr/bin/geckodriver
chmod +x /usr/bin/geckodriver

# install pip modules
pip install selenium
pip install PyVirtualDisplay

Затем вы можете следовать [инструкциям Django LiveServerTestCase] ​​[1].

Чтобы использовать только что установленный драйвер, сделайте что-то вроде этого:

from pyvirtualdisplay import Display
from selenium.webdriver.firefox.webdriver import WebDriver

driver = WebDriver(executable_path='/usr/bin/geckodriver')
display = Display(visible=0, size=(800, 600)).start()

# add your testing classes here...

driver.quit()
display.stop()
0 голосов
/ 18 апреля 2017

Selenium каким-то образом поддерживает безголовое тестирование браузера. Docker Selenium поддерживается SeleniumHQ.Эти док-контейнеры поставляются с поддержкой xvfb из коробки.Есть такие инструменты, как PhantomJS, которые вы можете подключить с помощью Selenium.Тем не менее, он официально не поддерживается самой Selenium.

Как и многие другие, PhantomJS не рекомендуется.Смысл Selenium в том, чтобы автоматизировать браузеры.Но почему автоматизировать браузер никто не использует?Я никогда не понимал, как разработчики так часто упускают это из виду ...

...