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!




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 3 (more)