Web Browser Automation - Geb
description
Transcript of Web Browser Automation - Geb
BY: KYLE ROGAHNCOMPUTER SCIENCE SEMINAR
UW PLATTEVILLE4/3/2012
Web Browser Automation - Geb
Introduction
Geb is a web browser automation toolJQuery + Webdriver + GroovyAdvantageous in certain web development
projectsNew: not even at version 1.0
On Deck
Browser Automation – Geb at a high levelAdvantagesDisadvantagesWhat 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 JVMSimilar to Ruby
Combined with some of the powerful features of Java Integrates well with all Java libraries
Supports mocking for unit testingEasy to learn and read
Groovy Example
Comparing to Ruby
Class HelloExample Def hello entity puts “Hello, #{entity}!” endEnd
def main example = HelloExample.new() example.hello(‘world’) end
JQuery
Content Selection Improvement over WebDriver’s DOM content selector Important to quickly locate desired objects on a page
Ability to modify html codeEvent handlers and overwritingSupport for all major browsersSome of its syntax makes its way into Geb
Jquery Example
Testing Frameworks
Geb can be combined with many testing frameworks
Or used in-lineSpock 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 – preferredIncrease maintainability and reusabilityBased 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 pageMake sure we’re
thereTry to login as an
adminClick loginCheck if we are at
the admin page
Conclusion
Geb is easy to read, write, learn, and modify.Saves a large amount of testing timeLarger application test coveragePage object model is powerfulEffective keywordsRead The Book of Geb
www.gebish.org Watch the selenium conference speech:
http://www.youtube.com/watch?v=T2qXCBT_QBs