94 votes

Est-il possible de masquer 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 Selenium Grid ? Puis-je également masquer la fenêtre Selenium RC ?

0 votes

Ce n'est peut-être pas acceptable, mais ne pourriez-vous pas simplement déplacer le navigateur en dehors de l'écran (en utilisant l'automatisation habituelle de l'interface utilisateur de Windows), par exemple en plaçant la fenêtre à (-10000, -10000) ?

2 votes

Puisque cette question est maintenant ancienne, permettez-moi de vous rediriger vers une réponse actualisée appropriée. au bas de cette page .

87voto

Dave Hunt Points 6327

Il y a quelques options :

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

  • Vous pouvez exécuter Selenium "sans tête" sous Linux dans XVFB. Je n'ai jamais essayé de le faire et je doute que cela en vaille vraiment 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 de permissions sur les versions ultérieures de Windows empêcheront probablement Selenium d'accéder au bureau comme Windows 2000 nous permettait de le faire.

  • Une autre option serait d'utiliser quelque chose comme WebDriver HTMLUnitDriver, qui ne lance pas un "vrai" navigateur. 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, vous pouvez aussi utiliser un service comme SauceLabs, qui permet d'exécuter vos tests dans le nuage. Une fois vos tests terminés, vous pouvez regarder une vidéo de leur exécution.

0 votes

Voici les instructions pour créer un fichier bat pour installer le service : brantleytec.blogspot.com/2012/11/

59voto

Corey Goldberg Points 15625

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 virtual framebuffer).

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

Le code Python pour l'exécution de headless 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

0 votes

Lorsque le code s'exécute dans un navigateur virtuel, puis-je continuer à utiliser mon PC normalement pendant que le script d'interaction avec le navigateur s'exécute ?

0 votes

Les ressources sont prises, votre machine deviendra plus lente !

24voto

Stéphane Bruckert Points 6124

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

Juste 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. Pour des raisons de débogage, utilisez driver.save_screenshot('screen.png') à différentes étapes de votre code.

5 votes

Il convient de mentionner que vous devez indiquer le chemin d'accès de PhantomJs.exe pour que cela fonctionne. exemple driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")

1 votes

Oui, mais uniquement sur Windows.

1 votes

Vous n'avez pas besoin de spécifier l'emplacement du binaire tant qu'il peut être trouvé à partir de la variable d'environnement $PATH de votre environnement.

14voto

Santi Points 2796

+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 sous Windows.

Ce que je ferais, c'est de dédier un ordinateur dans votre réseau local pour être en ligne tout le temps et avoir un serveur RC de selenium en marche. Ainsi, vous utilisez l'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")

(sachant que c'est l'adresse IP de l'ordinateur qui fait tourner le serveur).

Avec cette configuration, vous exécutez vos tests sur votre ordinateur, les navigateurs et la fenêtre du serveur RC sont sur un autre ordinateur et vous retournez sur le vôtre une fois que vous avez terminé.

12voto

pixelistik Points 3121

Sous Linux, vous pouvez exécuter votre navigateur de test sur un écran virtuel. Vous aurez besoin du xvfb pour créer un serveur X virtuel. Sur les distributions basées sur Debian, il suffit d'exécuter

sudo apt-get install xvfb

Il existe un bel outil ephemeral-x.sh qui permettra de configurer facilement n'importe quelle commande à exécuter sur l'écran virtuel. Téléchargez-le et le rendre 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 seront invisibles pour vous.

0 votes

Ce script a un problème de citation. Si je dis ./ephemeral-x.sh foo '*', il dit "Running : foo" suivi du contenu de mon répertoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X