Selenium, en fjärrkontroll för dina browsers. Fett för webbplatstester.
sudo gem install selenium
På min Mac:
# Rename this file to config.yml in order to configure the plugin
#
# General settings
#
environments:
- test
#selenium_path: 'c:\selenium' #path to selenium installation. only needed when selenium isn't installed in /vendor/selenium or as a gem
#
# Task settings
#
browsers:
firefox: '/Applications/Firefox.app/Contents/MacOS/firefox'
# ie: 'c:\Program Files\Internet Explorer\iexplore.exe'
port_start: 3000
#port_end: 3005
max_browser_duration: 120
Som du ser har vi inte ändrat mycket. Jag har selenium liggande i /vendor/selenium OCH som gem.
Nu:
script/server -e test
script/generate selenium startpage
för att få fram en .sel
-fil i den mappenNu ska vi skriva om testen, så att den gör något specifikt för din applikation.
OK, för att slippa skriva tester i “Selenese”, så ger du filen rsel
-suffixet:
# The user clicked the link in the email. Now she comes to the enter details page,
# and enters her details, which at first gives errors, on incomplete input, then
# lets her through.
# Using IDs on the HTML elements (such as forms) simplifies scripting tests.
setup :keep_session
setup :fixtures => :all
# The fixture key asd-asd-asd-asd-asd should be connected to [email protected]
open '/user/email_link/?userkey=asd-asd-asd-asd-asd'
assert_title 'Le Web App' # Check TITLE element
assert_text_present 'Your Account'
verify_value 'user_email', '[email protected]'
# Just submitting this form should yield errors
submit_and_wait 'user-details'
assert_text_present '3 errors prohibited this user from being saved'
assert_text_present "Password confirmation can't be blank"
# Entering only a username shows fewer errors
type 'user_username', "theuser"
submit_and_wait 'user-details'
assert_text_present '2 errors prohibited this user from being saved'
# Correct, full information should yield 0 errors
type 'user_password', "hurra"
type 'user_password_confirmation', "hurra"
submit_and_wait 'user-details'
assert_text_not_present 'errors prohibited this user from being saved'
Värt att notera är att user-details
är HTML-elementets ID för det formulär jag arbetar med. Förenklar scriptingen mycket, att ge saker ett ID.
För att upptäcka mer av Selenium-syntaxen, ladda ner Selenium IDE som är en addon för Firefox. Du har den installerad? Bra. Öppna den med Tools/Selenium IDE. Det finns ett textfält som heter Command, med en neråtpil. Klicka på pilen och kolla i listan över tillgängliga kommandon. De är camelCased, men du skriver ju i RSel, så du “underscorizar” namnen i ditt script.