Basically, what I'm trying to do is click on a button that becomes visible when hovering another element (its parent).
I have tried to use trigger.('mouseover')
on the parent of the hidden button, but that doesn't seem to work.
Here's a code snippet from the spec:
# label[for ... ] -> the parent element page.execute_script("$('label[for=\"department_#{department.id}\"]').trigger(\"mouseover\")") # le hidden button find(".actions").click # some <li> on a list that drops down when clicking the hidden button click_on("Edit department")
And the error ...
Failure/Error: click_on("Edit department") Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with
I would like to know how can I make the .actions
button visible on the page, in order to click it afterwards.
Any help would be much appreciated.
Capybara provides Element#hover
method from version 2.1:
find('.some_class').hover
This method is implemented in Capybara::Selenium::Driver
in almost the same way as in @AlexD's answer.
Note that to use #hover
in Selenium it's usually better to turn native events on:
Capybara.register_driver :selenium do |app| profile = Selenium::WebDriver::Firefox::Profile.new profile.native_events = true Capybara::Selenium::Driver.new(app, :browser => :firefox, profile: profile) end
Alex described the solution of such problems in his blog: check it out http://aokolish.me/blog/2012/01/22/testing-hover-events-with-capybara
RSpec.configure do |config| # ... Capybara.javascript_driver = :webkit end page.find('#element').trigger(:mouseover)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With