Lors du test du scénario par cucumber
, l'erreur suivante s'affiche lors de l'exécution des tests rspec
impossible d'obtenir une connexion firefox stable en 60 secondes (127.0.0.1:7055) (Selenium :: WebDriver :: Error :: WebDriverError)
Utilisation de Ruby (1.9.2)
Selenium-webdriver (2.27.2)
et de firefox (19.0)
En utilisant rspec-Rails (2.12.1)
, capybara (2.0.2)
et plusieurs autres gemmes, j'ai également ajouté une gemme launchy
mais ils ne semblent pas poser de problème. Et j'utilise Windows 7
.
J'ai eu le même problème (sous Linux). Fixé avec:
gem update Selenium-webdriver
Maintenant, j'utilise Ruby 1.9.3-p286, Selenium-webdriver 2.29.0, firefox 18.0 Ainsi que rspec-Rails 2.9.0, capybara 1.1.2 et capybara-webkit 0.12.1
J'ai ajouté Selenium-webdriver 2.29.0 à mon fichier Gemfile pour plus de sécurité.
Il semble que Selenium Webdriver reçoive de fréquentes mises à jour pour suivre Firefox. Mais comment savoir de quelle version vous avez besoin? Espérons que cette procédure fonctionnera même si les versions changent:
Allez à http://www.seleniumhq.org/download/ .
Faites défiler jusqu'à Selenium Client & WebDriver Liaisons de langue.
Dans cette section, dans la ligne de langue Ruby, cliquez sur "Modifier le journal" ( lien direct ).
Dans le journal des modifications, déterminez la version de Selenium dont vous avez besoin pour votre version de Firefox.
Si vous utilisez Bundler, exécutez bundle show Selenium-webdriver
pour voir quelle version vous avez. Pour mettre à jour, par exemple vers 2.35.0, ajoutez cette ligne à votre Gemfile
:
gem 'Selenium-webdriver', '2.35.0'
puis exécutez bundle update
pour installer. Si vous utilisez Spork, n'oubliez pas de le redémarrer avant de relancer vos tests.
Update One StackOverflow answer indique que le journal des modifications peut être mis à jour plus tôt dans le référentiel de code source qu'à seleniumhq.org. Le journal des modifications du référentiel de Ruby se trouve ici: https://github.com/SeleniumHQ/Selenium/blob/master/rb/CHANGES .
Si vous devez rétrograder Firefox sous Ubuntu 12.04, cette réponse explique comment revenir à Firefox 20. Une description plus générale d'un moyen de passer à n'importe quelle version de Firefox est donnée ici . Utilisez ensuite cette réponse pour mettre les mises à jour de Firefox en attente jusqu'à ce que Selenium publie une mise à jour qui fonctionne avec la version ultérieure de Firefox.
Dans mon cas, j'ai rétrogradé Firefox uniquement pour découvrir que Selenium Webdriver avait récemment été mis à jour pour prendre en charge la dernière version. Vérifiez donc les mises à jour pour Selenium!
bundle update Selenium-webdriver
Je viens de rencontrer ceci sur le serveur CI et j'ai découvert que c'était parce que Firefox n'avait pas d'affichage à utiliser. J'avais pensé que Selenium WebDriver le ferait sans autre intervention, mais ce n'était pas le cas.
L'ajout de Xvfb dans le mix a permis de faire fonctionner le logiciel.
Pour les rails utilisant Cucumber:
gem 'headless'
puis dans features/support/env.rb
Before do
if Capybara.current_driver == :Selenium
require 'headless'
headless = Headless.new
headless.start
end
end
Cette erreur se produit lorsque les versions de Selenium et de Firefox sont incompatibles.
Il y a deux options.
Mettre à jour le sélénium:
gem update Selenium-webdriver
Si cela échoue toujours, Selenium n’a pas été mis à jour avec la dernière version.
Rétrograder la version de Firefox:
Sudo apt-get purge firefox
Pour voir les packages disponibles au téléchargement apt-cache showpkg firefox
Sudo apt-get install firefox=#older_version#
La combinaison magique qui a fonctionné pour moi était Firefox 19.0 et le pilote Web Selenium 2.32.1 (au moment de la rédaction de cet article). Firefox 20.x et 21.x ne fonctionnaient pas. Je devais déclasser Firefox. N'oubliez pas non plus que (du moins sous Mac OS), si vous accédez au menu FireFox -> À propos de Firefox, la mise à niveau vers la dernière version est automatiquement effectuée. Ne fais pas ça.
Si ce qui précède fonctionne maintenant, comme dans mon cas, essayez-le.
Je recevais l'erreur de time out sur une machine et pas une autre. Les deux machines sont des clients légers exécutant exactement les mêmes versions de tout. Donc, cela a exclu les versions firefox incompatibles (une erreur est survenue sur une machine et non sur l'autre)
Il s'est avéré qu'il y avait un problème avec le port que sans tête utilisait. Il y avait un autre processus utilisant ce port.
Le ci-dessous corrigé le problème pour moi:
Ajoutez la ligne suivante dans le fichier .zshenv export XVFB_DISPLAY='new-port-number'
puis exécutez la commande zsh
dans le terminal pour définir le changement
Pour moi, j'avais déjà mis à jour les gemmes, mais j'avais ensuite besoin de mettre à jour mon forfait.
Dans PowerShell, accédez à votre répertoire, puis mettez à jour le paquet:
cd D:\Projects\LazyAutomation
bundle update
J'ai eu ce problème quand je commençais irb depuis un terminal où je m'étais assigné à un autre utilisateur. Je voudrais obtenir cette erreur lorsque j'ai couru irb en tant que cet utilisateur. Mais pas si je courais en tant que root. Et pas lorsque je suis revenu sur un shell appartenant à l'utilisateur connecté.
Rétrograder Firefox.
Si déjà utiliser gem 'headless'
et mettre à jour des gems n'est pas souhaitable pour le moment, vous devez rétrograder Firefox.
Pour Ubuntu (mais les autres distributions Linux seraient assez similaires), vous devriez:
Supprimez Firefox fourni avec les dernières versions d'Ubuntu.
Sudo apt-get purge firefox
Vous pouvez compléter en supprimant certaines données associées comme expliqué ici
Maintenant, installez une ancienne version de Firefox. Pour moi, la version 42.0 travaillé (comme notre Travis.ci l'utilise)
$ export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-42.0&lang=en-US&os=linux64'
$ wget --no-verbose -O /tmp/firefox-42.0.tar.bz2 $FIREFOX_SOURCE_URL
$ tar xvC ~/. -f /tmp/firefox-42.0.tar.bz2
ln -s ~/firefox/firefox ~/bin/firefox
Ouvrez un nouvel onglet de terminal et lancez vos spécifications de concombre/spécifications de sélénium.
Vous pouvez maintenant télécharger la dernière version de Firefox et créer un fichier .desktop
dans /usr/share/applications/
pour y accéder à partir du dock. Et laissez Selenium trouver par défaut l'ancienne version. Prenez ceci pour référence
pour ceux qui utilisent Vagrant, si vous vous connectez en activant XServer, firefox peut démarrer correctement, ce qui me l'a résolu. shant vagabond - -X