How to run Selenium as a GINT test

Summary

Here is a GINT version of a simple selenium test used as a standard example.  

First run

The first time this is run, it will take a long time (minutes) to download all the selenium dependencies. Be patient!

Selenium and browsers

You probably need to test against multiple browsers. We recommend Chrome or FireFox as the primary development browser. Get your tests running with one of these browsers and then add the other later. Safari is not recommended for development, it just is not as dependable for running Selenium tests (sad). We have had few problems using Chrome or FireFox. Consider not turning on automatic browser updates especially for your continuous integration server so you can manually control when updates occur. Browser changes can cause Selenium to fail until Selenium gets upgraded to a supporting level.

Examples

Example
// GINT version of http://seleniumhq.org/docs/03_webdriver.html#setting-up-webdriver-project. Include the browser specific driver(s) that you intend to test with.
// This version takes advantage of the seleniumHelper functions to make it easier
 
@Grapes([
    @Grab(group='org.swift.tools', module='gint', version='2.8.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-java',           version='3.11.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-firefox-driver', version='3.11.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-chrome-driver',  version='3.11.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-safari-driver',  version='3.11.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-ie-driver',      version='3.11.0'),
    @Grab(group='org.seleniumhq.selenium', module='selenium-edge-driver',    version='3.11.0'),
])
 
import org.swift.tools.*
import org.openqa.selenium.*
import org.openqa.selenium.support.ui.*
 
includeTool << Helper  // helper utilities
includeTool << SeleniumHelper
includeTool << Gint    // gint framework
 
gint.initialize(this) // required
 
// Open driver and track. Firefox is the default unless browser is set. Valid browsers are firefox, chrome, safari, or ie
gint.addSetUp(seleniumHelper.getInitializeTestcase())
 
gint.add(
    name: 'test',
    inline: {
        seleniumHelper.gotoUrl(url: 'http://www.google.com')
        def element = seleniumHelper.findElement(name: 'q')
        element.sendKeys('Cheese!') // Enter something to search for
        element.submit() // Now submit the form. WebDriver will find the form for us from the element
        helper.logWithFormat('title', seleniumHelper.getDriver().getTitle()) // show the title of the initial screen
  
        // Google's search is rendered dynamically with JavaScript. Wait for the page to load, timeout after 10 seconds
        (new WebDriverWait(seleniumHelper.getDriver(), 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().toLowerCase().startsWith("cheese!")
            }
        })
        assert seleniumHelper.getDriver().getTitle()?.toLowerCase()?.startsWith('cheese!') // Should see: "cheese! - Google Search"
    },
)
 
gint.finalizeTest() // final preparations for running tests
 
// Selenium clean up
target(name: 'final', description: 'Close the driver at the final stage of the script', prehook: [], posthook: []) {
    seleniumHelper.close()
}
Output
gant -f src/main/groovy/selenium.gant

= = = = = =   selenium started at Wed Sep 12 08:08:37 CDT 2012   = = = = = =
     [info] Run last failed testcases: test
    [start] test
   [ending] test
     [info] title . . . . . . . . . . . . . . . . . . : Google
 [complete] test - 4.766 secs

     [info] Successful testcases  . . . . . . . . . . : 1    <<< TEST SUCCESSFUL
     [info] Total testcases . . . . . . . . . . . . . : 1
     [info] Elapsed run time  . . . . . . . . . . . . : 12.484 secs 
= = = = = =   selenium completed at Wed Sep 12 08:08:49 CDT 2012 = = = = = =
     [info] Final: run driver quit
BUILD SUCCESSFUL
Total time: 14.75 seconds

Browser Support

Use the browser parameter in gint.properties or from a command line. Values supported are:

  • chrome - Google Chrome - this is the default for 2.8 and higher
  • firefox - Mozilla Firefox - default for releases <= 2.7
  • safari - OSX Safari
  • ie - Internet Explorer
  • edge - Microsoft Edge

Selenium Grid Support

Selenium Grid is an important tool for test automation environments now included with Selenium Server.

Selenium-Grid allows you run your tests on different machines against different browsers in parallel.

Starting with GINT 2.8, a new parameter called seleniumHub that can be set in gint.properties, as a command line parameter, or set directly in a testcase. If provided, it will be used as the url to the Selenium grid hub server address. Usually, something like https://localhost:4444/wd/hub or similar.