Background: I'm using Capybara with Rspec to test a Rails 3 app. Driver used: Selenium
Problem: I can't find the "Sign in" button in order to click on from within my test.
HTML code:
<form accept-charset="UTF-8" action="/" class="filter_form" id="login" method="post"> <fieldset> <div class="modal-body"> <div class="clearfix login-fields"> <label for="user_email">Email</label> <div class="input login-inputs"> <input class="input-text" id="user_email" name="user[email]" placeholder="email" size="30" type="email" value=""> </div> </div> <div class="clearfix login-fields"> <label for="user_password">Password</label> <div class="input login-inputs"> <input class="input-text" id="user_password" name="user[password]" placeholder="password" size="30" type="password"> </div> </div> </div> <div class="modal-footer"> <input class="btn btn-primary login_btn" id="btn_login" name="commit" type="submit" value="Sign in"> <a href="/lms/forgot_password" class="btn">Forgot password...</a> <a href="#" class="btn close cancel" data-dismiss="modal">Cancel</a> </div> </fieldset> </form>
Failing test
it "should login correctly if the right credentials are given", :js => true do Capybara.default_wait_time = 5 Capybara.reset_sessions! visit '/' click_link('login_link') #this will bring a modal window with the code posted above using js within("#login") do fill_in 'user_email', :with => "[email protected]" fill_in 'user_password', :with => "mypwd" end response.should have_selector('input#btn_login') #This passes click_on("input#btn_login") #Here it fails, saying it can't find an element with that selector response.should have_selector(:xpath, '//div[@class="alert-message block-message info"]') end
My test file is inside spec/requests
.
Any ideas? Thanks!
Please try this:
page.find("#btn_login").click
This: https://stackoverflow.com/a/11348065/1504796
Is the right answer.
click_on
does not take a CSS selector, but instead the text or id of a link. You want click_on("btn_login")
. No hash sign or anything.
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