web-dev-qa-db-fra.com

Est-il possible de cacher le navigateur dans Selenium RC?

J'utilise Selenium RC pour automatiser certaines opérations du navigateur, mais je veux que le navigateur soit invisible. Est-ce possible? Comment? Qu'en est-il de la grille de sélénium? Puis-je aussi masquer la fenêtre Selenium RC?

88
Yatendra Goel

Il y a quelques options:

  • Vous pouvez utiliser Selenium Grid pour que le navigateur soit ouvert sur une machine (ou une machine virtuelle) complètement différente à laquelle vous pouvez ensuite vous connecter via VNC ou Remote Desktop Connection si vous souhaitez afficher le navigateur. En outre, une autre option: si vous exécutez un processus d’avant-plan Jenkins sur ce serveur distant, il peut exécuter votre projet de test sur le bureau.

  • Vous pouvez exécuter Selenium 'headless' sous Linux dans XVFB. Je n'ai jamais essayé de le faire et je doute que cela en vaille la peine. http://www.alittlemadness.com/2008/03/05/running-Selenium-headless/

  • Vous pouvez envelopper Selenium RC dans un service Windows. http://support.Microsoft.com/kb/137890 . Sauf que les contraintes d'autorisations sur les versions ultérieures de Windows empêcheront probablement Selenium d'accéder au bureau comme Windows 2000 le permettait.

  • Une autre option serait d'utiliser quelque chose comme WebDriver HTMLUnitDriver, qui ne lance pas de navigateur "réel". http://code.google.com/p/webdriver/ . Il existe également une option PhantomJS et un "Chrome sans tête" que vous pouvez utiliser.

  • Bien sûr, il existe également la possibilité d'utiliser un service tel que SauceLabs, où vous pouvez faire exécuter vos tests dans le cloud. Une fois vos tests terminés, vous pouvez regarder une vidéo de leur exécution.

85
Dave Hunt

Sous Linux, vous pouvez exécuter WebDriver dans un affichage sans tête (virtuel) pour masquer le navigateur. Cela peut être fait avec Xvfb (X framebuffer virtuel).

Vous pouvez contrôler Xvfb directement à partir du code Python en utilisant xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper

Le code Python pour exécuter sans tête ressemblerait à ceci:

from Selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

Installez les dépendances sur Debian/Ubuntu:

$ Sudo apt-get install xvfb
$ pip install xvfbwrapper
57
Corey Goldberg

J'ai facilement réussi à cacher la fenêtre du navigateur.

Il suffit de installer PhantomJS . Puis changez cette ligne:

driver = webdriver.Firefox()

à:

driver = webdriver.PhantomJS()

Le reste de votre code n'aura pas besoin d'être changé et aucun navigateur ne s'ouvrira. Pour le débogage, utilisez driver.save_screenshot('screen.png') à différentes étapes de votre code.

20

+1 pour Selenium RC en tant que service Windows.

Pour que les tests soient complètement cachés, je pense que vous n’avez pas beaucoup de solutions si vous êtes sur Windows. 

Ce que je ferais pour dédier un ordinateur de votre réseau local à être en ligne tout le temps et à faire fonctionner un serveur Selenium RC. Donc, vous utilisez l'adresse IP de cet ordinateur au lieu de localhost pour exécuter vos tests. Par exemple:

browser = Selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(considérant que c'est l'adresse IP de l'ordinateur sur lequel tourne le serveur).

Une fois cette configuration configurée, vous exécutez vos tests sur votre ordinateur, les navigateurs et la fenêtre du serveur RC se trouvent sur un autre ordinateur, puis vous revenez à la vôtre.

13
Santi

Sous Linux, vous pouvez exécuter votre navigateur de test sur un affichage virtuel. Vous aurez besoin du paquetage xvfb pour créer un serveur X virtuel. Sur les distributions basées sur Debian, lancez simplement

Sudo apt-get install xvfb

Il existe un outil Nice ephemeral-x.sh qui permet de configurer facilement toute commande à exécuter sur l’affichage virtuel. Téléchargez-le et rendez-le exécutable:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

Ensuite, vous pouvez simplement l’utiliser pour démarrer le serveur Selenium:

./ephemeral-x.sh Java -jar Selenium-standalone.jar

Toutes les fenêtres de navigateur créées par Selenium utiliseront désormais l'affichage virtuel et vous seront invisibles.

12
pixelistik

Si vous utilisez Windows, une option consiste à exécuter les tests sous un autre compte utilisateur . Cela signifie que le navigateur et le serveur Java ne seront pas visibles sur votre propre compte.

4
Igor Brejc

C’est ainsi que j’effectue mes tests avec maven sur un ordinateur de bureau Linux (Ubuntu). J'en avais marre de ne pas pouvoir travailler avec le WebDriver firefox en prenant toujours le temps de me concentrer.

J'ai installé xvfb 

xvfb-run -a mvn installation propre

C'est tout

3
Paul Whelan

Dans de nombreux cas, PhantomJS ne répondra pas complètement à vos besoins, je voudrais développer l’option de chrome sans tête mentionnée dans la réponse de Dave Hunt. 

chrome 57 vient de lancer cette fonctionnalité. Vous pouvez l'utiliser en passant le drapeau --headless via ChromeDriver. Pour plus d'informations, consultez la discussion dans cette question

1
Marlies

Utiliser sans tête Chrome serait votre meilleur choix, ou vous pouvez poster directement sur le site pour interagir avec ce dernier, ce qui économiserait beaucoup de puissance de calcul pour d’autres tâches ou processus. J'utilise ceci lorsque je teste des robots d'automatisation Web qui recherchent des chaussures sur plusieurs sites à l'aide d'éléments lourds du processeur. fiabilité.

0
LiamººT
curl -k https://Gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

En passant, c’est une fonctionnalité nécessaire à tout développeur utilisant e2e qui, logiquement, va générer des navigateurs. Dans un environnement de développement, il est ennuyeux de gérer la fenêtre qui s'ouvre et sur laquelle vous pouvez interagir par inadvertance en faisant échouer le test.

0
Nestor Urquiza

Il existe un projet associé à PhantomJS appelé GhostDriver , destiné à exécuter des instances PhantomJS dans une grille Selenium à l'aide du protocole JSON webdriver wire. C'est probablement ce que vous recherchez, bien que cette question ait 4 ans maintenant.

0
djangofan

Sous MacOSX, je n'ai pas été en mesure de masquer la fenêtre du navigateur, mais au moins j'ai compris comment le déplacer sur un autre écran afin que cela ne perturbe pas trop mon flux de travail. Pendant que Firefox exécute des tests, il vous suffit de cliquer sur son icône dans le dock en maintenant la touche Ctrl enfoncée, de sélectionner Options et Attribuer à l’affichage 2.

0
chetstone