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.
Надеюсь, что это поможет.
Некоторые из показаний, которые я сделал, чтобы понять это: