Подтвердить что ты не робот

Ошибка огурца /Capybara: аргументы [0] - undefined (Selenium:: WebDriver:: Error:: JavascriptError)

Я провел тесты через терминал некоторое время без каких-либо проблем.:

огурец Создать\Новый\Game.feature

Что содержит следующее:

Feature: Create New Game

  Background: 
    Given I am logged in

  Scenario: Cleanup & New Game 01
    Then I Delete all test Games

И рубин:

Given(/^I am logged in$/) do
  el = first("button[ttag='account_dropdown_btn']", :visible => true)
  if el.nil?
    logMeIn("[email protected]","pa55w0rd")
  end
end

logMeIn определяется как:

# Logs the user in with given credentials
def logMeIn(username, password)
  page.driver.browser.manage.window.maximize
  visit ENV['BASE_URL']
  fill_in 'j_username', :with => username
  fill_in 'j_password', :with => password
  click_button 'Login'
end

Ни одно из вышеперечисленных не изменилось с того момента, когда тесты работали до сих пор. Сегодня, когда я запускаю тесты, как только откроется Firefox, я сразу получаю:

  Background:            # features/Create New Game.feature:4
    Given I am logged in # features/step_definitions/Generic Steps.rb:1
      arguments[0] is undefined (Selenium::WebDriver::Error::JavascriptError)

Как вы можете видеть, он не работает в первой строке. Я не знаю, почему.

Я обновил все свои драгоценные камни, чтобы убедиться, что все было свежо, но это не сработало. Я думал, что это может быть проблема с браузером, так как моя система автоматически обновляется до Firefox 35.0 этим утром. Я удалил и попытался 34, но это все та же проблема. Ни один из кода не изменился.

Я не знаю, какая другая неправильная конфигурация могла вызвать это, поскольку я ничего не изменил.

Может ли кто-нибудь помочь в дальнейшем с этой ошибкой?

4b9b3361

Ответ 1

Да, проблема в Firefox 35. Переход на версию 34. Возможно, это так, как вы пошли на понижение. Я просто запустил новый установщик DMG и подтвердил перезапись существующего приложения.

Прямая ссылка: https://download-installer.cdn.mozilla.net/pub/firefox/releases/34.0.5/mac/en-US/Firefox%2034.0.5.dmg (ссылка ссылается на https://support.mozilla.org/en-US/kb/install-older-version-of-firefox)

Подробнее об этой проблеме можно найти здесь: https://code.google.com/p/selenium/issues/detail?id=8387

Ответ 2

Как Justin Ko, это ошибка в Firefox 35 и Selenium-WebDriver 2.44.0. Проект Selenium имеет для него билет на эмиссию, и на момент написания настоящего документа существует предварительная версия gem (2.45.0.dev3), которая включает исправление.

https://code.google.com/p/selenium/issues/detail?id=8390

Ответ 3

Как говорили другие, в Firefox 35 есть ошибка. Чтобы этого избежать, мне было проще настроить Capybara для запуска тестов Selenium в Chrome. Поэтому, если вам не нужно запускать тесты, особенно в Firefox, вы можете использовать chromedriver.

Существует gem, чтобы получить его легко.

Ответ 4

Такая же проблема с драйвером firefox здесь.

Caused by: org.openqa.selenium.WebDriverException: arguments[0] is undefined
Command duration or timeout: 24 milliseconds
Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40'
System info: host: '', ip: '', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_71'
Session ID: 49a4f55c-33b7-4ab8-aea5-cb3bb98041e1
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=WINDOWS, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=35.0.1}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)

Пониженный firefox до 34.0.5 и клик Javascript:

executeScript("arguments[0].click();", el);

Работает снова как шарм.

И очень важно иметь рабочий клик javascript, так как нативный щелчок просто слишком ненадежный.