Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including C#, Java, Groovy, Perl, PHP, Python and Ruby.
The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.
2.
How Selenium Remote Control works
You launch a server on your test machine.
Your tests connect to that server via IP
.
The server launches a browser, with selenium CORE
embedded as javascript into the page.
Selenium CORE simulates user actions with javascript.
www.mindqonline.com
3. The Bad
The Good
Doesn’t steal your
mouse/keyboard.
Works with any browser that
uses javascript
Works for any OS that
supports java.
Very fast page interactions.
Large API
Supports a variety of
programming languages.
Can be run on remote
machines
www.mindqonline.com
Can’t see anything
outside the page object.
Not all browsers support
all functionality.
Some pages aren’t
automatable.
Can’t see inside third
party apps
XSS Limitations
4. A
different way of automating the browser.
Create
a browser-specific driver to control the
browser directly.
Have to do this for each browser!
Object
oriented API
Doesn’t need a real browser
No javascript limitations
No need for a server.
Isn’t as delicate as selenium.
www.mindqonline.com
5. Went
into Beta Dec 24th.
Web Driver + Selenium
The
two projects have merged (literally) into
Selenium 2.0
Large browser support and no javascript
limitations.
No server
The old API’s are still available.
New API’s are becoming available.
www.mindqonline.com
6. You
IWebDriver
have 2 options:
This is just the WebDriver api
Doesn’t support a lot of browsers.
Will need to change all your tests.
WebDriverBackedSelenium
Uses the old Selenium 1 API
But uses WebDriver to run things if possible
Can use selenium 1 if the browser isn’t supported.
www.mindqonline.com
7.
Object Oriented
Doesn’t break nearly as often
Handles pageloads automatically
Fewer problems automating
Somewhat more complicated API
selenium.type(“password”,”thisIsMyPassword”);
driver.findElement(By.id("password")).sendKeys(“thisIsMyPassword");
By.Id, By.Xpath, By.Name, By.ClassName, By.PartialLinkText
All the supported browsers work really well
Can extend the API to add custom functionality.
Works well with a Page Object design model.
www.mindqonline.com
8.
Adds a layer of abstraction into your code.
Helps to organize your code once it grows large.
All automation is automatically reusable and shareable.
A way to separate tests from re-usable functions.
A way to store information about how the system works.
A way to specify what page functions start on, and what
page they end on.
A way to programmatically break your tests when
functionality changes.
Makes code maintenance easier.
There is even a PageFactory class available to
automatically create them.
www.mindqonline.com
9.
Each page is defined as it’s own class.
Actions (including navigation) are represented as functions for a class.
Each function returns a new Page object, signifying what page the actions
stops on.
Your tests “know” what page you are on, and will only give you access to
functions available to that class.
Tests only talk to the page objects.
Page objects only talk to the driver.
Elements on the page are stored as variables for the page object.
Automatic page validations can be stored in the constructor for each
page object.
Tests become a string of well defined functions, not meaningless
gibberish.
Tests can be grouped by namespace.
Class Inheritance can be used to define functionality to a set of pages.
We can make functional logic transparent to the tests by returning
different inherited classes.
www.mindqonline.com