web-dev-qa-db-fra.com

Selenium prend-il en charge les tests de navigateur sans navigateur?

Je suis en train de regarder Selenium Server pour le moment et je ne semble pas avoir remarqué de pilote prenant en charge les tests de navigateur sans navigateur.

Sauf erreur, cela ne le supporte pas. Si vous êtes sur X, vous pouvez créer un framebuffer virtuel pour masquer la fenêtre du navigateur, mais ce n'est pas vraiment un navigateur sans tête.

Quelqu'un peut-il m'éclairer? Selenium prend-il en charge les tests de navigateur sans navigateur?

65
khoomeister

vous n’avez pas besoin d’utiliser PhantomJS comme alternative au sélénium. Selenium comprend une classe de pilotes Web PhantomJS, qui utilise la plate-forme GhostDriver. Installez simplement le binaire PhantomJS sur votre machine. en python, vous pouvez alors utiliser:

from Selenium import webdriver
dr = webdriver.PhantomJS() 

et le tour est joué.

17
Magenta Nova

L'API WebDriver prend en charge HTMLUnit en tant que navigateur pour vos tests. Les Ruby utilisent Capybara depuis un certain temps pour leurs tests de sélénium sans tête.

15
AutomatedTester

Je sais que c'est un ancien post. Je pensais que cela aiderait les autres à la recherche d'une réponse.

Vous pouvez installer un firefox complet dans n’importe quelle distribution Linux en utilisant XVFB. Cela garantit que vos tests sont effectués dans un navigateur réel. Une fois que vous avez une configuration sans tête, vous pouvez utiliser le WebDriver de votre choix pour vous connecter et exécuter des tests.

10
Arun

Je remarque que vous dites que l’utilisation d’un framebuffer X n’est pas une vraie solution sans tête, cependant, pour la plupart, je pense que ce serait acceptable. En plus de cela, ce service vous aidera à le faire pour vous si cela vous intéresse comme solution.

7
General Redneck

Les navigateurs sans tête sont une mauvaise idée. Ils vous fournissent des tests, mais rien à voir avec ce qu'un vrai utilisateur verra, et ils masquent beaucoup de problèmes que seuls les navigateurs réels rencontre. Vous feriez infiniment mieux d'utiliser un navigateur "dirigé" (, c'est-à-dire , sauf HTMLUnit) dans un environnement sans tête ( par exemple , Windows ou Linux avec XVFB).

6
Ross Patterson

Oui. Selenium prend en charge les tests sans navigateur sur les navigateurs. Il est plus rapide et plus pratique pour l'exécution d'un grand nombre de tests.

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

Oui, Selenium prend en charge les tests de navigateur sans interface graphique. Les navigateurs sans fil sont plus rapides que les navigateurs en temps réel.

0
Siva K

Oui, Selenium prend en charge les tests de navigateur sans navigateur ... mais j'ai trouvé que HTMLUnit échouait la plupart du temps ... je recherchais une alternative ... PhantomJs était vraiment bon. ... C'est vraiment bon pour les tests de fumée ...

http://phantomjs.org/

0
Vicky

Avec Ruby et macOS: brew install phantomjs puis:

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

Voici une "réponse moderne" sur la façon d'utiliser Selenium avec les pilotes xvfb et Firefox dans un environnement Ubuntu Linux exécutant 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

Vous pouvez ensuite suivre les [instructions de Django LiveServerTestCase] ​​[1].

Pour utiliser le pilote que vous venez d'installer, procédez comme suit:

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 prend en charge les tests de navigateur sans navigateur d'une certaine manière. Docker Selenium est maintenu par SeleniumHQ. Les conteneurs Docker sont livrés avec le support xvfb. Il existe des outils comme PhantomJS que vous pouvez associer à Selenium. Cependant, il n'est pas officiellement soutenu par Selenium lui-même.

Tout comme ce que d’autres ont décrit, PhantomJS n’est pas vraiment recommandé. Le but de Selenium est d’automatiser les navigateurs. Mais pourquoi automatiser un navigateur que personne n'utilise? Je n'ai jamais compris à quel point cela était négligé si souvent par les développeurs.

0
Sean

Installez les versions chromeDriver et google-chrome-stable sur le serveur Linux, où les tests seront déclenchés, et ajoutez les mêmes fichiers binaires dans votre code.

extrait de code:

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