Question

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 également masquer la fenêtre de Selenium RC?

Était-ce utile?

La solution

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. 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-sélenium-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, contrairement à Windows 2000.

  • Une autre option consisterait à 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 ainsi qu'un "Chrome sans tête" que vous pouvez utiliser.

  • Bien sûr, il existe également la possibilité d'utiliser un service comme 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 ceux-ci en cours d'exécution.

Autres conseils

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 de code Python en utilisant xvfbwrapper : https://github.com/cgoldberg/xvfbwrapper

Le code Python pour une exécution 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()

Installer les dépendances sur Debian / Ubuntu:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

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

Il suffit de installer PhantomJS . Ensuite, changez cette ligne:

driver = webdriver.Firefox()

à:

driver = webdriver.PhantomJS()

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

+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 sélénium 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")

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

Avec cette configuration, 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 une fois que vous avez terminé.

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 bel outil ephemeral-x.sh qui configurera 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 du navigateur créées par Selenium utiliseront désormais l'affichage virtuel et vous seront invisibles.

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

C’est ainsi que j’effectue mes tests avec maven sur un bureau Linux (Ubuntu). J'en ai marre de ne pas pouvoir travailler avec le WebDriver de firefox qui prend toujours toute mon attention.

J'ai installé xvfb

  

xvfb-run -a nouvelle installation du MVN

C’est ça

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 l'indicateur --headless via ChromeDriver. Pour plus d'informations, consultez la discussion dans cette question silencieuse-en-fond

Il existe un projet lié à PhantomJS appelé GhostDriver , conçu pour exécuter des instances PhantomJS dans une grille Selenium. utilisant le protocole JSON webdriver wire. C’est probablement ce que vous recherchez, bien que cette question ait 4 ans maintenant.

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 tellement 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.

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 exécutant e2e qui va logiquement créer des navigateurs. Dans un environnement de développement, il est ennuyeux de gérer la fenêtre qui s'ouvre sans cesse et avec laquelle vous pouvez interagir accidentellement et faire échouer le test.

Utiliser sans tête Chrome serait votre meilleur choix. Vous pouvez également poster directement sur le site pour interagir avec ce dernier, ce qui économiserait beaucoup de puissance de calcul pour d’autres tâches / 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é.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top