Documente Academic
Documente Profesional
Documente Cultură
Adam Goucher
adam_goucher@hotmail.com
Lecture Objective
Give students an introduction to web
automation using the Selenium
framework.
What is Selenium?
Selenium is a web test tool that runs in the
browser
Because it runs in the browser, it does
exactly what a user does
Javascript
Selenium is written in Javascript
Javascript is how AJAX applications are
written, so Selenium can test them too
Multiple Seleniums?
There are 3 versions of Selenium
Selenium Core The main component of
Selenium
Selenium RC A scripting layer over
Selenium Core
Selenium IDE a Firefox extension with
record / playback functionality
Selenium IDE
Selenium IDE adds a layer of Record /
Playback to Selenium
Is available for Firefox only
First Script
Command
Target
Value
open
/jobmining/
type
queryTitle
qa
select
ct_category
label=Banking
clickAndWait
Submit01
clickAndWait
link=sqa
Checkpoints
Of course, scripts wouldnt be tests if they didnt
check something
assert* tests fail the test immediately
verify* tests keep track of results and continue the
script regardless
verifyTextPresent
Job Description \n
dgds
asserTextPresent
Job
Requirements \n
sdrfasf
Locators
Selenium identifies what a component is through
the use of a locator
link=name
dom=document.images[56]
xpath=//table[@id='table1']//tr[4]/td[2]
css=a[href="#id3"]
Depending on your application, there might be
major performance differences
Playback
Playback of a single script is handled
through the IDE
Run Go as fast as the script can process
Walk Slows down the execution
Step Executes the next step
Test Suites
In order to run multiple scripts, you need to
chain them together in a Test Suite
Just another html table
Runs inside Firefox, but not in S-IDE
Saved in the same directory as the tests
that are included in it
Test Suites
<table>
<tr>
<td>Job Search test suite</td>
</tr>
<tr>
<td><a target="testFrame" href=selenium-ide01.html">Job Search</a></td>
</tr>
</table>
Test Suites
The URL has a specific format
chrome://seleniumide/content/selenium/TestRunner.html?
baseURL=http://your_hose:port&test=file://
/c://temp/qa109/testsuite.html&auto=true&
multiWindow=false
Selenium RC
Selenium IDE is great for quick recording of
tests, but it somewhat lacks for power
Selenium RC gives you the ability to drive
Selenium from a real programming
language (Java, Perl, Python, Ruby, and
more)
Proxy
Because the commands for Selenium RC
are embedded in a script, a proxy is
needed to control the browser.
Python
There are python bindings for most of the
Selenium calls
Watch for naming differences
While not necessary, most use the unittest
module with Selenium
Data Driven
One key concept when doing automation
is to recycle your scripts through data
driving them
Use the underlying language you are
using Selenium RC with to handle most of
it for you
Same Origin
Prevents a document or script loaded from
one origin from getting or setting
properties of a document from a different
origin Mozilla security documentation
In other words, cannot work across server
boundries
Selenium Core
Selenium Core is used by both Selenium
IDE and RC
Runs test suites on the same server to
avoid the Same Origin problem
Dont have same flexibility as RC, but
tests and code under test is in the same
spot
Tips
Start and stop your script from the same
spot
Record your script in S-IDE, then use it as
a base for a S-RC script
Use Firebug to give you the XPath
Support
Because this is free, open source software
there is no official support channel
Mailing lists
Wiki
Forums
Are your main sources of assistence.
But dont forget your peers!