Неможливо отримати стабільне з’єднання Firefox за 60 секунд (127.0.0.1:7055)


75

Під час сценарію тестування cucumberя отримую таку помилку під час запуску rspecтестів

не вдалося отримати стабільне з’єднання Firefox за 60 секунд (127.0.0.1:7055) (Selenium :: WebDriver :: Error :: WebDriverError)

Використання ruby (1.9.2) selenium-webdriver (2.27.2)таfirefox (19.0)

Використовуючи rspec-rails (2.12.1), capybara (2.0.2)і кілька інших дорогоцінних каменів, також я додав launchyдорогоцінний камінь , але вони , здається, не є проблемою. І я використовую Windows 7.


Покажіть футляр для відтворення (якщо він великий, опублікуйте його на gist.github.com).
Андрій Боталов

1
Ми лише почали це робити у вихідні дні до стабільних тестів і зробили пакет оновлень, щоб це виправити.
pschuegr

Чи може зміна браузера за замовчуванням на підтримувану версію chrome для selenium-webdriver вирішити цю проблему чи ні?
Панджіяр Рахул

Я розмістив тут справу про відтворення. gist.github.com/4536512
Панджіяр Рахул

FWIW: ваш суть є стеком стека, а не випадком відтворення.
пі 02

Відповіді:


88

У мене була та ж проблема (на Linux). Виправлено:

gem update selenium-webdriver

Зараз я використовую ruby ​​1.9.3-p286, selenium-webdriver 2.29.0, firefox 18.0 А також rspec-rails 2.9.0, capybara 1.1.2 та capybara-webkit 0.12.1

Я додав selenium-webdriver 2.29.0 до свого Gemfile для забезпечення безпеки.


Дякую!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Оновлення селену-веб-драйвера працювало для мене на Mac OS X 10.6.8 / ruby ​​1.9.3-p194
студ

Цілком працює! Дуже дякую. Я використовую selenium-webdriver 2.34.0 і firefox 19 (я знизив 23 до 19, я не пробував FF 23) без помилок.
ersentekin

Так, Firefox 22 в OS X просто сидить там, перш ніж нарешті тест закінчиться з цією помилкою.
Sarah Vessels

Ось англійська версія Firefox 19 для OS X: ftp.mozilla.org/pub/mozilla.org/firefox/releases/19.0/mac/en-US
Sarah

5
Це не повинна бути схваленою відповіддю. stackoverflow.com/a/18263152/712188 - це більш правильна відповідь.
Дін Галвін,

47

Здається, Selenium Webdriver отримує часті оновлення, щоб не відставати від Firefox. Але звідки ви знаєте, яка версія вам потрібна? Сподіваємось, ця процедура буде працювати навіть при зміні версій:

  1. Перейдіть на http://www.seleniumhq.org/download/ .

  2. Прокрутіть униз до розділу Прив'язки мови клієнта та веб-драйвера .

  3. У цьому розділі, у мовному рядку Ruby , натисніть "Змінити журнал" ( пряме посилання ).

  4. У Журналі змін визначте, яка версія Selenium вам потрібна для вашої версії Firefox.

Якщо ви використовуєте Bundler, запустіть, bundle show selenium-webdriverщоб побачити, яка у вас версія. Щоб оновити, наприклад, до 2.35.0, додайте цей рядок до свого Gemfile:

gem 'selenium-webdriver', '2.35.0'

а потім запустіть bundle updateдля встановлення. Якщо ви використовуєте Spork, не забудьте перезапустити його перед повторним запуском тестів.

Оновити одну відповідь StackOverflow вказує на те, що Журнал змін може бути оновлений раніше у сховищі вихідного коду, ніж на seleniumhq.org. Журнал змін сховища для Ruby знаходиться тут: https://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES .

Пониження Firefox

Якщо вам потрібна версія Firefox до Ubuntu 12.04, ця відповідь пояснює, як повернутися до Firefox 20. Більш загальний опис способу переходу на будь-яку версію Firefox наведено тут . Потім використовуйте цю відповідь, щоб затримати оновлення Firefox, доки Selenium не випустить оновлення, яке працює з пізнішою версією Firefox.

У моєму випадку я оновлював Firefox лише для того, щоб виявити, що Selenium Webdriver нещодавно був оновлений, щоб обробляти останню версію, тому спочатку перевірте оновлення Selenium!



9

Просто натрапив на це на сервері CI і виявив, що це тому, що Firefox не мав дисплея для використання. Я думав, що веб-драйвер селену змусить його працювати без подальшого втручання, але це було не так.

Додавання Xvfb до суміші змусило це працювати.

Для рейок з огірком:

gem 'headless'

потім у можливостях / support / env.rb

Before do
  if Capybara.current_driver == :selenium
    require 'headless'

    headless = Headless.new
    headless.start
  end
end

Що таке javascript, еквівалентний вашим можливостям / support / env.rb?
Скотт Стенсленд,

Не знаю конкретно, але це файл, який включається та запускається перед початком усіх тестів.
Метт Гібсон,

3

Ця помилка трапляється, коли версії селену та firefox несумісні.

Є два варіанти.

  1. Оновити селен:

    gem update selenium-webdriver

    Якщо це все одно не вдається, селен не оновлено до останньої версії.

  2. Поновити версію Firefox:

    sudo apt-get purge firefox

    Щоб переглянути доступні пакети для завантаження apt-cache showpkg firefox

    sudo apt-get install firefox=#older_version#


1

Чарівною комбінацією, яка працювала для мене, був Firefox 19.0 та веб-драйвер селену 2.32.1 (останній на момент написання статті). Firefox 20.x та 21.x не працювали. Мені довелося знизити рівень Firefox. Також майте на увазі, що (принаймні на Mac OS), якщо ви перейдете в меню FireFox -> Про Firefox, він автоматично оновиться до останньої версії. Не роби цього.


1

Якщо вищесказане зараз працює, як у моєму випадку, спробуйте.

Я отримував помилку тайм-ауту на одній машині, а не на іншій. Обидві машини - це тонкі клієнти, що використовують абсолютно однакові версії всього. Таким чином, виключено несумісні версії Firefox (помилка сталася на одній машині, а не на іншій)

Виявилося, що з портом, яким користувався безголовий, виникла проблема. За допомогою цього порту був інший процес.

Нижче вирішено проблему для мене:
Додайте наступний рядок у файл .zshenv,
export XVFB_DISPLAY='new-port-number'
а потім запустіть команду zshв терміналі, щоб встановити зміни


0

У мене виникла ця проблема, коли я запускав irb з терміналу, де я подав заявку іншому користувачеві. Я отримав би цю помилку, коли запустив irb як той користувач. Але ні, якщо я працював як root. І не тоді, коли я повернувся до оболонки, що належить зареєстрованому користувачеві.


0

Для мене я вже оновлював дорогоцінні камені, але потім потрібно було оновити мій комплект.

У PowerShell перейдіть до каталогу, а потім оновіть пакет:

cd D:\Projects\LazyAutomation
bundle update

0

для кожного, хто використовує Vagrant, якщо ви ввійдете, увімкнувши XServer firefox, зможете правильно запустити, що вирішило це для мене. бродячий ssh ​​- -X


0

Пониження Firefox.

Якщо вже зараз використання gem 'headless'та оновлення самоцвітів не бажано, як зараз, то вам потрібно поновити Firefox.

Для Ubuntu (але інші дистрибутиви Linux будуть досить подібними) вам слід:

Видаліть firefox, який постачається з останніми версіями Ubuntu

sudo apt-get purge firefox

Ви можете доповнити видаленням деяких пов’язаних даних, як пояснено тут

Тепер встановіть стару версію Firefox. Для мене працювала версія 42.0 (як це використовує наш Travis.ci)

$ 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

Відкрийте нову вкладку терміналу та запустіть специфікації огірка / селену.

Тепер ви можете завантажити найновішу версію Firefox і створити .desktopфайл, /usr/share/applications/щоб отримати до нього доступ із док-станції. І нехай Selenium за замовчуванням знайде стару версію. Візьміть це для довідки


-3

Виконавши пропозицію ballPointPenguin, тепер я можу використовувати watir-webdriver для отримання локальних файлів або файлів у каталозі htdocs моєї локальної установки apache або файлів в Інтернеті:

1) file:///Users/me/jquery_programs/1.htm
2) 'http://localhost:8080/my.html'
3) 'http://www.google.com'

require 'watir-webdriver'

browser = Watir::Browser.new :firefox
browser.goto 'http://localhost:8080/my.html'

До оновлення я отримував помилку:

`connect_until_stable ': неможливо отримати стабільне з’єднання Firefox за 60 секунд (127.0.0.1:7055) (Selenium :: WebDriver :: Error :: WebDriverError)


Це не відповідь на це питання.
Ченг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.