Transcript Web Browser Automation
Web Browser Automation - Geb
B Y : K Y L E R O G A H N C O M P U T E R S C I E N C E S E M I N A R U W P L A T T E V I L L E 4 / 3 / 2 0 1 2
Introduction
Geb is a web browser automation tool JQuery + Webdriver + Groovy Advantageous in certain web development projects New: not even at version 1.0
On Deck
Browser Automation – Geb at a high level Advantages Disadvantages What is it – the details Webdriver Groovy Jquery Page Object Model Example code testing
Web Browser Automation
Programmatically control your web browser Use this ability to write tests for web applications Improved quality assurance process
Advantages
Eliminate tedious manual testing Good fit for large projects with many test cases Unit tests not enough to catch errors Integration of complex systems MVC example Data Access Objects – retrieving customer information
Advantages
Save time (and money) Speed up navigation through many pages Reduce data entry What takes a person minutes Geb can do in seconds
Advantages
Easy to learn Readability Semantics easy to figure out Going to the google home page “To” keyword, google home page defined as an object To GoogleHomePage Low learning curve
Disadvantages
Less useful on smaller projects May cost more time than it saves Manual testing may suffice Could still use it if desired Guaranteed Learning curve Since it’s new there’s a high chance developers will not know it Comes down to affordability Although, learning curve is not that high
Disadvantages
Configuration issues Specific environment needed If using a compatible environment already it is easy May be tough otherwise Grails, Maven, Gradle are suggested Switching environments may be too costly Software Engineering Management Decisions
What Makes Up Geb
WebDriver Handles automation JQuery Used for content selection Groovy Syntax based on this language Page Object Model Architecture that makes Geb powerful
WebDriver
Driving force behind browser automation Modifies document object model (DOM) components Control browser behavior DOM components Interface content Buttons, text fields…etc WebDriver by itself vs. Geb Geb is simpler, more readable, and easier to learn
WebDriver Example
Groovy
Dynamic programming language for the JVM Similar to Ruby Combined with some of the powerful features of Java Integrates well with all Java libraries Supports mocking for unit testing Easy to learn and read
Groovy Example
Comparing to Ruby
Class HelloExample End Def hello entity puts “Hello, #{entity}!” end def main example = HelloExample.new() end example.hello(‘world’)
JQuery
Content Selection Improvement over WebDriver’s DOM content selector Important to quickly locate desired objects on a page Ability to modify html code Event handlers and overwriting Support for all major browsers Some of its syntax makes its way into Geb
Jquery Example
Testing Frameworks
Geb can be combined with many testing frameworks Or used in-line Spock is the recommended framework Included in the Geb package Configuration: Import geb.spock.GebSpec
Clearest and most concise way to write Geb tests
In-line Geb
Go vs driver.get(…) Assert without test framework Webdriver: driver.getTitle() then compare using .equals
$ - Jquery sendKeys() in WebDriver
Page Object Model
Non inline Geb programs – preferred Increase maintainability and reusability Based on the notion of page objects Define a class for each page of your application Call on page components when needed Only have to use JQuery for lookup once Powerful!
Typical Page Class
Geb Testing Using Page Classes
Test specifications Specific names Readability/Maintainability Spock framework Extra keywords to simplify tests Do something then check the result Are we on the right page?
Did a certain component change?
Testing Example
Go to the login page Make sure we’re there Try to login as an admin Click login Check if we are at the admin page
Conclusion
Geb is easy to read, write, learn, and modify.
Saves a large amount of testing time Larger application test coverage Page object model is powerful Effective keywords Read The Book of Geb
www.gebish.org
Watch the selenium conference speech: http://www.youtube.com/watch?v=T2qXCBT_QBs