capybara-webkit-kann nicht simulieren, klicken Sie auf (nicht link/button) element

In einem rspec feature Szenario habe ich:

scenario 'shows things', js: true do

    page.find('#my_div').trigger(:click)

Scheint dies nicht, um das Feuer der jQuery-handler, der auf das click-Ereignis dieses element. Im debugger gibt dieser Aufruf mit einem leeren string "".

Sollte capybara-webkit in der Lage sein zu simulieren, die Maus-Ereignisse mit jQuery-Handler auslösen ajax-Anfragen, die update-dom? Wenn ja, irgendwelche Vorschläge für diesen Fall?
Ich wechselte von selenium-webdriver, weil das Wasserschwein #trigger-Methode wird nicht unterstützt.

Und versuchen, trigger-das jQuery-event-direkt wirft einen Fehler:

page.execute_script "$('#masthead .fclass').trigger('click')"

gibt

Capybara::Webkit::InvalidResponseError:
       Javascript failed to execute

Mein gemfile hat

group :test do
  gem 'capybara'
  gem "database_cleaner", "~> 0.9.1"
  gem 'capybara-webkit', git: 'git://github.com/thoughtbot/capybara-webkit.git'
  gem 'launchy'
end

Ich bin mit 'edge' capybara-webkit-als ich auf einen Fehler mit einem xpath-Fehler anderweitig (v2.04?).

Ich habe nicht in der Lage zu bekommen ein Protokoll von der javascript-Fehler, wenn ich habe versucht, hinzufügen rack Ausnahmen in spec/spec_helper.rb:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
require 'rack/utils'
Capybara.app = Rack::ShowExceptions.new(MyApp::Application)

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  #...

  Capybara.javascript_driver = :webkit

  config.before (scope = :suite) do
    %x[bundle exec rake assets:precompile]
  end

  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.before(:each) do
    DatabaseCleaner.clean
  end

  config.infer_base_class_for_anonymous_controllers = false
end

Update:
Ich ersetzte capybara-webkit-mit

gem 'poltergeist' 

Und in spec/spec_helper.rb:

    require 'capybara/poltergeist'
    ...
    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app, { debug: true })
    end
    Capybara.javascript_driver = :poltergeist
    Capybara.current_driver = :poltergeist

Bekomme ich diese Fehlermeldungen in der Konsole von der Seite("#my_id").trigger('click'):

...
{"name"=>"click", "args"=>[3, 2]}
poltergeist [1366370900594] state default -> mouse_event
poltergeist [1366370900596] state mouse_event -> loading
Not allowed to load local resource: file:///home/me/rails/my_app/public/assets_test/application.css
...
Not allowed to load local resource: file:///home/me/rails/my_app/public/assets_test/application.js

Ich habe versucht chmod der poltergeist gem Berechtigungen, aber Gleiches Ergebnis.

Und versucht zu starten-Seite.execute_script(%F($("my_id").trigger('click')))
gibt ein jQuery undefined type error:

 ReferenceError: Can't find variable: $
           at phantomjs://webpage.evaluate():1
           at phantomjs://webpage.evaluate():1
           at phantomjs://webpage.evaluate():1
           at phantomjs://webpage.evaluate():1
  • Sie haben leere Elemente im Selektor? Es könnte sein, diesen bug: github.com/thoughtbot/capybara-webkit/issues/494
  • poltergeist ist ein headless browser, hast du mal versucht, öffnen Sie die Seite in Ihrem browser, so dass Sie sehen können, welche Elemente auf der Seite? Sie können einfache call "save_and_open_page" in Ihrer Funktion.
InformationsquelleAutor rigyt | 2013-04-19
Schreibe einen Kommentar