rails.se
SeleniumOchRails (changes)

Showing changes from revision #2 to #3: Added | Removed

Selenium, en fjärrkontroll för dina browsers. Fett för webbplatstester.

  • Skaffa hem Selenium on Rails
  • Skapa en config.yml där du pekar på Firefox (t.ex.)—det finns en config.yml.example att redigera
  • Skaffa gemen selenium: 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:

  • Starta din lokala server i test-miljön: script/server -e test
  • Gå till http://localhost:3000/selenium och kolla. Selenium TestRunner är en mojäng för att köra dina ännu oskrivna seleniumtester.
  • Skapa en ny mapp /test/selenium/ i din railsapp
  • Gör sen en script/generate selenium startpage för att få fram en .sel-fil i den mappen
  • Kolla lite på filen, och reloada sen Selenium-sidan, så körs testerna. Om inte, tryck på knappen “All” uppe till höger under “Execute Tests”.

Nu 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 theuser@example.com

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', 'theuser@example.com'

# 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.

Grejer