Capybara Το Capybara προσομοιώνει τις ενέργειες ενός πραγματικού χρήστη για τον έλεγχο εφαρμογών ιστού.
Πλοήγηση & Ενέργειες
visit '/login'
visit articles_path
Κλικ σε συνδέσμους & κουμπιά
click_on 'Submit' # Ταίριασμα κειμένου συνδέσμου ή κουμπιού
click_button 'Save Changes'
click_link 'Log Out'
Στοιχεία ελέγχου φόρμας
fill_in 'Email', with: '[email protected]'
fill_in 'Password', with: 'secret'
choose 'Male' # Κουμπί επιλογής (Radio)
check 'Accept Terms' # Πλαίσιο ελέγχου (Checkbox)
uncheck 'Send Newsletter'
select 'California', from: 'State'
unselect 'Hawaii', from: 'State'
attach_file 'Avatar', '/path/to/image.png'
Πεδίο εφαρμογής (Scoping)
Περιορισμός ενεργειών σε συγκεκριμένο κόμβο DOM:
within '.modal-dialog' do
fill_in 'Username', with: 'admin'
click_button 'Confirm'
end
within_fieldset 'Shipping Address' do
fill_in 'City', with: 'San Francisco'
end
within_table 'Orders' do
expect(page).to have_content('$99.00')
end
RSpec Matchers
expect(page).to have_content('Welcome Back')
expect(page).to have_current_path('/dashboard')
# Παρουσία στοιχείου
expect(page).to have_selector('div.alert', text: 'Success')
expect(page).to have_css('button.primary')
expect(page).to have_xpath('//table/tr')
# Στοιχεία φόρμας
expect(page).to have_field('First Name', with: 'John')
expect(page).to have_checked_field('Agree to Terms')
expect(page).to have_select('Role', selected: 'Developer')
expect(page).to have_button('Submit', disabled: false)
expect(page).to have_link('Profile', href: '/users/1')
# Αρνητικοί ισχυρισμοί
expect(page).to have_no_content('Error')
expect(page).not_to have_selector('.modal')
Αναζήτηση στοιχείων (Finders)
btn = find('button.submit')
btn.click
field = find_field('Email')
link = find_link('Home')
all('li.nav-item').each do |item|
puts item.text
end
Ειδοποιήσεις & παράθυρα διαλόγου JS
# Αποδοχή ειδοποίησης browser
accept_alert do
click_button 'Show Alert'
end
# Αποδοχή επιβεβαίωσης
accept_confirm do
click_button 'Delete Account'
end
# Απόρριψη επιβεβαίωσης
dismiss_confirm do
click_button 'Cancel Order'
end
Αποσφαλμάτωση
# Άνοιγμα σελίδας HTML στον browser
save_and_open_page
# Αποθήκευση στιγμιότυπου οθόνης
save_and_open_screenshot
# Εκτέλεση JavaScript
page.execute_script("$('.dropdown').show()")
result = page.evaluate_script("window.innerWidth")