Selenium:: WebDriver:: Ошибка:: JavascriptError: ожидание загрузки с помощью функции valu.js Firefox 23

Сегодня, выполняя мои тесты rspec, я получаю следующую ошибку, когда где-то в тесте возникает вызов `page.execute_script '.

 Selenium::WebDriver::Error::JavascriptError:
   waiting for evaluate.js load failed
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/[email protected]/components/driver_component.js:8360:in `r'
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/[email protected]/components/driver_component.js:392:in `fxdriver.Timer.prototype.runWhenTrue/g'
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/[email protected]/components/driver_component.js:386:in `fxdriver.Timer.prototype.setTimeout/<.notify'

В каталоге /resources (а не в компонентах) пути выше указан файл valu.js, как на других машинах.

Это произошло после обновления до Firefox 23 с 22. Я еще не смог откат, чтобы подтвердить, что возвращение к 22 действительно исправляет проблему, но все, что изменилось, я верю.

Кто-нибудь еще видел эту проблему?

Запуск Kubuntu 12.04, Capybara 1.1.4, селен-webdriver gem 2.33.0

Я попробовал обновить Capybara до 2.whatever и selenium-webdriver до 2.34.0, без изменений.

Ответ 1

У меня была такая же проблема с Mac OS X Lion с FF 23.

Но проблема ушла для меня, когда я обновил селен-webdriver до 2.34.0

Я добавил gem "selenium-webdriver", "~> 2.34.0" в свой Gemfile.

bundle update selenium-webdriver

bundle install

Огурец теперь отлично работает с селеном.

Ответ 2

Я обновил свои драгоценные камни до:

gem 'capybara',             '~> 2.1.0'
gem 'selenium-webdriver',   '~> 2.35.1'

Это сработало для меня.

Update:

Capybara 2.1.0 дал мне проблему с Phantomjs, и, наконец, я использую версию 2.0.3.

Ответ 3

Я побежал ниже, и это сработало:

 gem install selenium-webdriver -v "2.35.0"

Ответ 4

Недавно я установил Selenium Webdriver и увидел эту же проблему с некоторыми моими тестовыми скриптами Python. После некоторого рытья я смог определить, что execute_script висит, когда он пытался преобразовать возвращаемое значение JS в объект, который может быть изначально оценен (в Python для моего сценария).

Будет зависать:

self.driver.execute_script('document.body.innerHTML="<form></form>";')

Не зависает:

self.driver.execute_script('document.body.innerHTML="<form></form>"; return true;')

Вы все равно можете возвращать более сложные объекты, я просто стараюсь всегда явно иметь JS return значение, которое я хочу, или true, если мне просто нужно выполнить script.

Надеюсь, что это поможет.

Некоторые из показаний, которые я сделал, чтобы понять это: