web-dev-qa-db-de.com

Unterstützt Selenium das Testen von Headless-Browsern?

Ich betrachte gerade Selenium Server und sehe keinen Treiber, der das Testen von Headless-Browsern unterstützt.

Wenn ich mich nicht irre, unterstützt es das nicht. Wenn Sie X verwenden, können Sie einen virtuellen Framebuffer erstellen, um das Browserfenster auszublenden. Dies ist jedoch nicht wirklich ein headless-Browser.

Kann mich jemand aufklären? Unterstützt Selenium das Testen von Headless-Browsern?

65
khoomeister

sie müssen PhantomJS nicht als Alternative zu Selenium verwenden. Selenium enthält eine PhantomJS-Webdriver-Klasse, die auf der GhostDriver-Plattform läuft. Installieren Sie einfach die PhantomJS-Binärdatei auf Ihrem Computer. In Python können Sie dann Folgendes verwenden:

from Selenium import webdriver
dr = webdriver.PhantomJS() 

und voila.

17
Magenta Nova

Die WebDriver-API unterstützt HTMLUnit als Browser für Ihre Tests. Ruby-Leute haben Capybara für eine Zeitlang für ihren Selenium-Test ohne Kopf verwendet, daher ist es definitiv machbar.

15
AutomatedTester

Ich weiß, das ist ein alter Beitrag. Ich denke, es wird anderen helfen, die nach einer Antwort suchen.

Sie können mit XVFB in jeder Linux-Distribution ein voll funktionsfähiges Firefox installieren. Dadurch wird sichergestellt, dass die Tests in einem echten Browser durchgeführt werden. Sobald Sie ein Headless-Setup eingerichtet haben, können Sie einen Web-Treiber Ihrer Wahl verwenden, um eine Verbindung herzustellen und Tests durchzuführen.

10
Arun

Ich stelle fest, dass Sie sagen, dass die Verwendung eines X-Framebuffers keine echte Headless-Lösung ist, aber für die meisten denke ich, dass dies akzeptabel wäre. Darüber hinaus hilft dieser Service , wenn Sie sich für eine Lösung interessieren.

7
General Redneck

Headless-Browser sind eine schlechte Idee. Sie erhalten einige Tests, aber nichts, was ein echter Benutzer sieht, und sie maskieren eine Menge Probleme, die nur echte Browser treffen. Wenn Sie einen headed-Browser (d. H., Alles andere als HTMLUnit) in einer Umgebung ohne Kopfhörer (z. B., Windows oder Linux mit XVFB) verwenden, ist es unendlich viel besser. 

7
Ross Patterson

Ja. Selen unterstützt das Testen von Headless-Browsern und ist schneller und bequemer für eine große Anzahl von Testfällen.

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
Radadiya Nikunj

Ja Selenium unterstützt das Testen von Headless-Browsern. Headless-Browser sind schneller als Echtzeit-Browser.

0
Siva K

Ja, Selenium unterstützt das Testen von Headless-Browsern ... aber HTMLUnit schlug meistens fehl ... Ich suchte nach einer Alternative ... PhantomJs war wirklich gut ... Es ist wirklich gut für die Rauchprüfung ...

http://phantomjs.org/

0
Vicky

Mit Ruby und macOS: brew install phantomjs dann:

driver = Selenium::WebDriver.for :phantomjs
0
Dorian

Hier eine "moderne Antwort" zur Verwendung von Selenium mit xvfb und Firefox-Treiber in einer Ubuntu-Linux-Umgebung mit 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

Sie können dann den Anweisungen [Django LiveServerTestCase] ​​[1] folgen.

Um den Treiber zu verwenden, den Sie gerade installiert haben, gehen Sie folgendermaßen vor:

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
gorus

Selenium unterstützt gewissermaßen das Testen von Headless-Browsern. Docker Selen wird von SeleniumHQ gepflegt. Diese Docker-Container werden standardmäßig mit xvfb-Unterstützung ausgeliefert. Es gibt Tools wie PhantomJS, die Sie mit Selenium verbinden können. Es wird jedoch nicht offiziell von Selenium selbst unterstützt.

Ähnlich wie das, was andere beschrieben haben, wird PhantomJS nicht wirklich empfohlen. Bei Selenium geht es darum, Browser zu automatisieren. Aber warum automatisieren Sie einen Browser, den niemand verwendet? Ich habe nie verstanden, wie das von Entwicklern so oft übersehen wurde.

0
Sean

Installieren Sie die Versionen chromeDriver und google-chrome-stable auf dem Linux-Server, auf dem die Tests ausgelöst werden, und fügen Sie die gleichen Binärdateien in Ihren Code ein.

code-Auszug:

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
ConfuserUser