web-dev-qa-db-fra.com

Exécution de Chrome WebDriver sur un serveur Linux sans affichage

Je voudrais exécuter des tests automatisés en utilisant chrome webdriver de Selenium2 sur un serveur linux.

J'ai déjà configuré Firefox pour qu'il s'exécute sur le serveur en utilisant Xvfb (Voir http://www.semicomplete.com/blog/geekery/xvfb-firefox.html ) et je voudrais faire quelque chose similaire avec du chrome. Est-ce possible?

28
Snukker

Je n'ai pas réussi à trouver un moyen de le faire par programme pour ChromeDriver comme vous le pouvez avec FirefoxBinary.

J'ai soumis une demande d'amélioration qui a un correctif attaché pour permettre cela. Vous pouvez le voir ici: http://code.google.com/p/Selenium/issues/detail?id=267

Edit: Vous pouvez voir ci-dessous la réponse de Stephen sur la façon d'utiliser cela maintenant que le changement a été fusionné .: https://stackoverflow.com/a/16619608/998442

6
Jaie Wilson

Je faisais face au même défi de configurer une boîte Linux avec Selenium + chromedriver, et voici mes notes:

Pré-requis:

  1. Installez JRE pour exécuter le pot Selenium

  2. Installer le serveur Selenium

    récupérez le fichier jar depuis https://code.google.com/p/Selenium/downloads/list )

  3. Installez xvfb (vous semblez avoir déjà réalisé cette partie)

  4. Installez Google-Chrome pour votre distribution Linux

  5. Téléchargez le pilote chrome Vous pouvez le récupérer ici: https://sites.google.com/a/chromium.org/chromedriver/downloads

  6. Installez d'autres dépendances Selenium dont vous pourriez avoir besoin (mais ce qui précède est le minimum pour faire fonctionner chromedriver)

Courir:

  1. Exécutez xvfb

Xvfb :1 -screen 5 1024x768x8 &

export DISPLAY=:1.5

  1. Exécutez le bocal du serveur Selenium avec les options ChromeDriver. Cela ressemblera à ceci:

Java -jar Selenium-server-standalone-2.30.0.jar -Dwebdriver.chrome.bin=/path/to/google-chrome -Dwebdriver.chrome.driver=/path/to/chromedriver

  1. Le journal du serveur Selenium devrait produire quelque chose de similaire à ceci:

19 mars 2013 10:07:27 org.openqa.grid.Selenium.GridLauncher main INFO: Lancement d'un serveur autonome

Définition de la propriété système webdriver.chrome.bin sur {location de google-chrome}

Définition de la propriété système webdriver.chrome.driver sur {emplacement de chromedriver}

10: 07: 34.258 INFO - Les instances RemoteWebDriver doivent se connecter à: http://127.0.0.1:4444/wd/hub

10: 07: 34.259 INFO - Version Jetty/5.1.x 10: 07: 34.259 INFO - Démarré HttpContext [/ Selenium-server/driver,/Selenium-server/driver] ...

Référence: http://www.yann.com/en/use-xvfb-Selenium-and-chrome-to-drive-a-web-browser-in-php-23/08/2012.html

À votre santé!

23
Hafiz Ismail

Selon SetEnvironmentProperty à ChromeDriver par programme vous pouvez faire ce qui suit:

service = new ChromeDriverService.Builder()
    .usingChromeDriverExecutable(new File("/path/to/chromedriver"))
    .usingAnyFreePort()
    .withEnvironment(ImmutableMap.of("DISPLAY",":20"))
    .build();

Voici la documentation pour withEnvironment

9