-
-
Save mpugach/7731129 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Navigating | |
visit('/projects') | |
visit(post_comments_path(post)) | |
#Clicking links and buttons | |
click_link('id-of-link') | |
click_link('Link Text') | |
click_button('Save') | |
click('Link Text') # Click either a link or a button | |
click('Button Value') | |
#Interacting with forms= | |
fill_in('First Name', :with => 'John') | |
fill_in('Password', :with => 'Seekrit') | |
fill_in('Description', :with => 'Really Long Text…') | |
choose('A Radio Button') | |
check('A Checkbox') | |
uncheck('A Checkbox') | |
attach_file('Image', '/path/to/image.jpg') | |
select('Option', :from => 'Select Box') | |
#scoping | |
within("//li[@id='employee']") do | |
fill_in 'Name', :with => 'Jimmy' | |
end | |
within(:css, "li#employee") do | |
fill_in 'Name', :with => 'Jimmy' | |
end | |
within_fieldset('Employee') do | |
fill_in 'Name', :with => 'Jimmy' | |
end | |
within_table('Employee') do | |
fill_in 'Name', :with => 'Jimmy' | |
end | |
#Querying | |
page.has_xpath?('//table/tr') | |
page.has_css?('table tr.foo') | |
page.has_content?('foo') | |
page.should have_xpath('//table/tr') | |
page.should have_css('table tr.foo') | |
page.should have_content('foo') | |
page.should have_no_content('foo') | |
find_field('First Name').value | |
find_link('Hello').visible? | |
find_button('Send').click | |
find('//table/tr').click | |
locate("//*[@id='overlay'").find("//h1").click | |
all('a').each { |a| a[:href] } | |
#Scripting | |
result = page.evaluate_script('4 + 4'); | |
#Debugging | |
save_and_open_page | |
#Asynchronous JavaScript | |
click_link('foo') | |
click_link('bar') | |
page.should have_content('baz') | |
page.should_not have_xpath('//a') | |
page.should have_no_xpath('//a') | |
#XPath and CSS | |
within(:css, 'ul li') { ... } | |
find(:css, 'ul li').text | |
locate(:css, 'input#name').value | |
Capybara.default_selector = :css | |
within('ul li') { ... } | |
find('ul li').text | |
locate('input#name').value | |
##Comments to consider: | |
## 1 | |
# 1 Correct method name is click_on, not click | |
# 2 default_selector in Capybara 2 is :css so examples in section scoping should be updated. | |
# 3 Capybara 2.1 by default finds only visible elements so find_link('Hello').visible? doesn't really make sense | |
# 4 There's no such method as locate in Capybara | |
# 5 all('a').each { |a| a[:href] } is inefficient if page contains a lot of links and driver is quiet slow (like Selenium) as Capybara will make a query to driver for each invocation of #[]. Instead I advice to get array of elements' attributes using execute_script like it's shown here | |
# http://stackoverflow.com/questions/15005667/capybara-writing-drop-downs-options-texts-into-an-array/15166724#15166724 | |
## 2 | |
#have_selector works when you use 'expect' syntax: | |
#expect(page).to have_selector 'foobar' | |
## 3 | |
#within now works differently: | |
#within("li#employee") do | |
# fill_in 'Name', :with => 'Jimmy' | |
#end | |
# | |
#within(:xpath, "//li[@id='employee']") do | |
# fill_in 'Name', :with => 'Jimmy' | |
#end | |
#You might want to update your gist. | |
#https://github.com/jnicklas/capybara#scoping | |
## 4 | |
# Hi, it is very useful. Just for "add value", in multiple select exists unselect(Option, from: select_box) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment