Last active
April 26, 2019 15:45
-
-
Save mkutz/58d3ae2f07c8c519c8900ab5b25f5e87 to your computer and use it in GitHub Desktop.
Standalone script using Geb to automate a browser
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env groovy | |
@Grab("org.gebish:geb-core:2.3.1") | |
@Grab("io.github.bonigarcia:webdrivermanager:3.4.0") | |
@Grab("org.seleniumhq.selenium:selenium-java:3.141.59") | |
@Grab("ch.qos.logback:logback-classic:1.2.3") | |
import geb.Browser | |
import geb.Configuration | |
import groovy.cli.OptionField | |
import groovy.cli.picocli.CliBuilder | |
import io.github.bonigarcia.wdm.WebDriverManager | |
import org.openqa.selenium.WebDriver | |
import org.openqa.selenium.chrome.ChromeDriver | |
import org.openqa.selenium.chrome.ChromeOptions | |
import org.openqa.selenium.firefox.FirefoxDriver | |
import org.openqa.selenium.firefox.FirefoxOptions | |
import org.slf4j.Logger | |
import org.slf4j.LoggerFactory | |
Logger log = LoggerFactory.getLogger(this.class) | |
@OptionField(shortName = "h", description = "display usage") | |
boolean help | |
@OptionField(shortName = "b", description = "browser to be used", defaultValue = "firefox") | |
String browser | |
@OptionField(shortName = "m", description = "wait for additional manual actions") | |
boolean manual | |
@OptionField(description = "run the browser in headless mode") | |
boolean headless | |
CliBuilder cli = new CliBuilder(name: "${this.class}") | |
cli.parseFromInstance(this, args) | |
if (help) { | |
cli.usage() | |
System.exit(0) | |
} | |
log.info("Setting up the browser…") | |
Closure<WebDriver> driverClosure | |
switch (browser) { | |
case ["chrome", "c"]: | |
WebDriverManager.chromedriver().setup() | |
driverClosure = { new ChromeDriver(new ChromeOptions(headless: headless)) } | |
break | |
case ["firefox", "ff"]: | |
WebDriverManager.firefoxdriver().setup() | |
driverClosure = { new FirefoxDriver(new FirefoxOptions(headless: headless)) } | |
break | |
default: | |
log.error("Unknown browser \"${browser}\"") | |
System.exit(1) | |
break | |
} | |
log.info("…done") | |
log.info("Executing automated steps…") | |
Browser.drive(new Configuration(driver: driverClosure)) { | |
go "http://gebish.org" | |
assert title == "Geb - Very Groovy Browser Automation" | |
} | |
log.info("…done") | |
if (manual && !headless) { | |
System.out << "\n\nPress enter when you're done…" | |
System.console().readLine() | |
} | |
System.exit(0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment