Slideshare.net (beta)

 

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 3 (more)

Selenium

From agoucher, 10 months ago

These are the slides I used to introduce one of my classes to web more

4751 views  |  1 comment  |  3 favorites  |  438 downloads  |  2 embeds (Stats)
Embed
options

More Info

This slideshow is Public
Total Views: 4751
on Slideshare: 4713
from embeds: 38

Slideshow transcript

Slide 1: Selenium Adam Goucher adam_goucher@hotmail.com

Slide 2: Lecture Objective Give students an introduction to web automation using the Selenium framework.

Slide 3: 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

Slide 4: What tests can Selenium do? • Browser compatibility – One script, many browsers • Regression

Slide 5: Javascript • Selenium is written in Javascript • Javascript is how AJAX applications are written, so Selenium can test them too

Slide 6: Where to get it? Selenium can be downloaded and installed for free from http://www.openqa.org

Slide 7: QTP vs. Selenium • QTP is not cross platform, Selenium is • QTP costs a lot of money, Selenium is free • QTP needs VBScript, Selenium has lots of language bindings • The default format of testing in Selenium is HTML • QTP can control other types of applications other than web

Slide 8: 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

Slide 9: Selenium IDE • Selenium IDE adds a layer of Record / Playback to Selenium • Is available for Firefox only

Slide 10: First Script Command Target Value open /jobmining/ type queryTitle qa select ct_category label=Banking clickAndWait Submit01 clickAndWait link=sqa

Slide 11: Checkpoints Of course, scripts wouldn’t be tests if they didn’t 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

Slide 12: 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

Slide 13: 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

Slide 14: 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

Slide 15: Test Suites <table> <tr> <td>Job Search test suite</td> </tr> <tr> <td><a target=\"testFrame\" href=“selenium-ide- 01.html\">Job Search</a></td> </tr> </table>

Slide 16: Test Suites The URL has a specific format chrome://selenium- ide/content/selenium/TestRunner.html?ba seURL=http://your_hose:port&test=file:///c: //temp/qa109/testsuite.html&auto=true&m ultiWindow=false

Slide 17: 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)

Slide 18: Why do you want a real language? By using Selenium inside a full fledged language you can do the following • Seed the database • Check the database • Control external services • Launch multiple windows • Run multiple browsers in parallel In addition to running the actual test.

Slide 19: Proxy Because the commands for Selenium RC are embedded in a script, a proxy is needed to control the browser.

Slide 20: 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

Slide 21: import selenium, unittest class JM(unittest.TestCase): def setUp(self): protocol = \"http\" host = \"your host\" port = your_port_number self.verificationErrors = [] self.selenium = selenium.selenium(\"localhost\", 4444, \"*chrome\", \"%s://%s:%s\" % (protocol, host, port)) self.selenium.start() self.selenium.open(\"/jobmining/\") def test_doSearch(self): sel = self.selenium sel.open(\"/jobmining/\") sel.type(\"queryTitle\", \"qa\") sel.select(\"ct_category\", \"label=Banking\") sel.click(\"Submit01\") sel.wait_for_page_to_load(\"30000\") sel.click(\"link=sqa\") sel.wait_for_page_to_load(\"30000\") try: self.failUnless(sel.is_text_present(\"Job Description \\n dgds\")) except AssertionError, e: self.verificationErrors.append(str(e)) def tearDown(self): self.selenium.stop() if __name__ == \"__main__\": unittest.main()

Slide 22: 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

Slide 23: 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

Slide 24: 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 • Don’t have same flexibility as RC, but tests and code under test is in the same spot

Slide 25: 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

Slide 26: Designing for Selenium • Proper use of tables and CSS div tags makes Selenium much easier

Slide 27: 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 don’t forget your peers!