Cannot find Microsoft Edge binary - webdrivermanager-java

Try to start a selenium test with the edge driver and get an exception
Everything is working fine with firefox and chrome, but I couldn't manage it to start edge (Version 77.0.223.0 (Official build) dev (64-bit)).
This is my test class
class EdgeTest {
private static String binaryPath;
private WebDriver driver;
#BeforeEach
public void setupTest() {
WebDriverManager.edgedriver().setup();
binaryPath = WebDriverManager.edgedriver().getBinaryPath();
WebDriverManager.edgedriver().browserPath("C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe\")");
System.setProperty("webdriver.edge.driver", binaryPath);
driver = new EdgeDriver();
}
#After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
#Test
public void test() {
// Your test code here. For example:
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.get("https://en.wikipedia.org/wiki/Main_Page");
}
This is the exception I get:
org.openqa.selenium.WebDriverException: unknown error: cannot find Microsoft Edge binary
Build info: version: '3.141.0', revision: '2ecb7d9a', time: '2018-10-31T20:09:30'
System info: host: 'IRVING', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_212'
Driver info: driver.version: EdgeDriver
remote stacktrace: Backtrace:
Ordinal0 [0x00007FF7845DD422+1823778]
Ordinal0 [0x00007FF7845457B2+1202098]
And logs
14:46:46.411 [main] DEBUG i.g.bonigarcia.wdm.WebDriverManager - Edge Dev (based on Chromium) version 77 found
14:46:46.415 [main] DEBUG i.g.bonigarcia.wdm.WebDriverManager - Driver for edge77 not found in local properties
14:46:46.668 [main] DEBUG i.g.bonigarcia.wdm.WebDriverManager - The driver version for Microsoft Edge 77 is unknown ... trying with latest
14:46:46.669 [main] DEBUG i.g.bonigarcia.wdm.WebDriverManager - Reading https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ to find out the latest version of Edge driver
14:46:47.050 [main] INFO i.g.bonigarcia.wdm.WebDriverManager - Latest version of Edge driver is 77.0.229.0
14:46:47.060 [main] INFO io.github.bonigarcia.wdm.Downloader - Using binary driver previously downloaded
14:46:47.060 [main] INFO i.g.bonigarcia.wdm.WebDriverManager - Exporting webdriver.edge.driver as C:\Users\cseegraef\.m2\repository\webdriver\edgedriver\win64\x64\77.0.229.0\msedgedriver.exe
Previous : 1.8.0_212-b03
Starting MSEdgeDriver 77.0.229.0 (219d9c8b098bc5511828863cd68c4e880c69814b) on port 46356
Only local connections are allowed.
Please protect ports used by the WebDriver and related test frameworks to prevent access by malicious code.
Thanks for any help or information.

Related

Is it possible to use selenium on an arm64 device which has a linux server?

I'm trying to run selenium on an arm64 device with linux server, since I cannot install chrome on this device, I want to use chromium or firefox browser in headless mode. But I'm getting different errors every time I run my selenium program. here is the error log while using chromium:
/root/.cache/selenium/chromedriver/linux-arm64/101.0.4951.41/chromedriver: 1: Syntax error: "(" unexpected
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:585)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:248)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:164)
at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:106)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:93)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:82)
at dev.emad.selenium.book.Main$Companion.main(Main.kt:43)
at dev.emad.selenium.book.Main.main(Main.kt)
Caused by: org.openqa.selenium.WebDriverException: Driver server process died prematurely.
Build info: version: '4.1.3', revision: '7b1ebf28ef'
System info: host: 'FriendlyELEC', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'aarch64', os.version: '5.10.60', java.version: '11.0.14.1'
Driver info: driver.version: ChromeDriver
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:226)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:98)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:567)
... 8 more
I have tried xvfb but it didn't help, And here is he code that I'm using:
WebDriverManager.chromedriver().setup()
val chromeOptions = ChromeOptions().apply {
setHeadless(true)
addArguments(
"--disable-infobars",
"--disable-extensions",
"--disable-application-cache",
"--disable-gpu",
"--disable-dev-shm-usage",
"--dns-prefetch-disable",
"--ignore-ssl-errors",
"--ignore-certificate-errors",
"--no-sandbox",
"--window-size=1920,1080",
"--remote-debugging-port=9222"
)
}
chromeOptions.setBinary("/usr/bin/chromium-browser")
driver = ChromeDriver(chromeOptions)
driver.get("https://bing.com")

Selenium in "HeadLess" mode "Runtime.executionContextCreated has invalid 'context'" on Vagrant [duplicate]

I'm trying to get started using selenium and have downloaded a chrome driver and put into my classpath. I'm just trying to get the title right now to see if I can get it to work. Code currently looks like this:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Flows {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "/Users/mn/Desktop/project/turv/src/main/chromedriver");
WebDriver driver = new ChromeDriver();
String baseUrl = "http://google.dk/";
driver.get(baseUrl);
System.out.println(driver.getTitle());
driver.close();
}
}
I expected my output to be something along the lines of "Google", but I get this error instead:
Connected to the target VM, address: '127.0.0.1:55299', transport: 'socket'
Starting ChromeDriver (v2.8.241036) on port 2571
[warn] kq_init: detected broken kqueue; not using.: Undefined error: 0
May 07, 2018 12:12:35 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Disconnected from the target VM, address: '127.0.0.1:55299', transport: 'socket'
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"11895A1B77AC560388AA2919259E1422","isDefault":true},"id":1,"name":"","origin":"://"}
(Session info: chrome=66.0.3359.139)
(Driver info: chromedriver=2.8.241036,platform=Mac OS X 10.13.3 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'cetreas-MBP', ip: 'fe80:0:0:0:c9e:2c67:1d27:4e0b%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.3', java.version: '1.8.0_161'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptSslCerts: true, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {userDataDir: /var/folders/s7/lv2wt4t15cn...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, javascriptEnabled: true, locationContextEnabled: true, nativeEvents: true, platform: MAC, platformName: MAC, rotatable: false, takesHeapSnapshot: true, takesScreenshot: true, version: 66.0.3359.139, webStorageEnabled: true}
Session ID: ca1f4ba131e73c3d01058bec2b976d22
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:273)
at com.cetrea.flows.Flows.main(Flows.java:15)
I cant really figure out what the error is trying to tell me. Is it because I'm asking for the title before it has fully loaded the site maybe? Do I need to add some kind of waitforit command before the getTitle() ?
This error message...
org.openqa.selenium.WebDriverException: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"11895A1B77AC560388AA2919259E1422","isDefault":true},"id":1,"name":"","origin":"://"}
...implies that the ChromeDriver was unable to initiate/spawn a new WebBrowser i.e. Chrome Browser session.
Your main issue is the version compatibility between the binaries you are using as follows :
You are using chromedriver=2.8 which is pretty ancient.
You are using chrome=66.0
Release Notes of ChromeDriver v2.38 clearly mentions the following :
Supports Chrome v65-67
So there is a clear mismatch between ChromeDriver version (v2.8) and the Chrome Browser version (v66.0)
Solution
Upgrade ChromeDriver to current ChromeDriver v2.38 level.
Keep Chrome version at Chrome v66.x levels. (as per ChromeDriver v2.38 release notes)
Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
Use CCleaner tool to wipe off all the OS chores before and after the execution of your test Suite.
If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.
Take a System Reboot.
Execute your #Test.
Always invoke driver.quit() within tearDown(){} method to close & destroy the WebDriver and Web Client instances gracefully.

chrome-driver 83 compatibility with Ubuntu

I'm running Ubuntu 18.04.1 LTS and used stable versions of Google Chrome v81 and compatible chrome-driver v81 for a long time successfully.
After reinstalling google-chrome-stable up to 83.0.4103.61 and updating chrome-driver up to 83.0.4103.39. According to the official page they are fully compatible.
But after these updates I'm getting error unable to connect to renderer.
My capabilities remains the same:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'--headless',
'--disable-gpu',
'--no-sandbox',
'--remote-debugging-port=9222',
'--ignore-certificate-errors',
'--allow-insecure-localhost'
]
}
}
And full error message is the following:
[11:07:05] E/launcher - session not created
from disconnected: unable to connect to renderer
(Session info: headless chrome=83.0.4103.61)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: '******', ip: '******', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-38-generic', java.version: '10.0.2'
Driver info: driver.version: unknown
remote stacktrace: #0 0x5633488fb579 <unknown>
My webdriver-manager status:
[11:24:59] I/status - selenium standalone version available: 3.141.59 [last]
[11:24:59] I/status - chromedriver version available: 83.0.4103.39 [last]
[11:24:59] I/status - geckodriver version available: v0.26.0 [last]
[11:24:59] I/status - android-sdk is not present
[11:24:59] I/status - appium is not present
Does anybody faced the same issue and knowing how to solve it or rollback to v81 correctly? Any suggestions will be appreciated.
P.S. 1) the same config works well locally on the latest MacOS 2) I didn't succeed to launch chromium-browser v81 with driver v81, probably did the rollback in a wrong way.
The issue is resolved. The problem was that I was using argument --remote-debugging-port=9222. But someday google-chrome process got stuck deadly and occupied the port. So, when the chromedriver starts the google-chrome it can't get access to busy port for debugging purposes and simply exits with no errors. That's why the chromedriver can't get access to google-chrome and sends unable to connect to renderer error.
The solution is:
kill frozen processes that occupy ports
use debugging-port when you really need it
using direct connection to the chromedriver reduces "layers" so the overall stability was improved

Chromedriver couldn't open chrome browser on AWS EC2

I'm trying to run simple Java code to setup EC2 machine on AWS and its pure purpose is to run selenium.
The same code on my local (MAC) works fine, just by changing the chrome path
I could start chromedriver and google-chrome independently with out issues.
chromedriver version - 71.0.3578.80
Google Chrome 71.0.3578.98
Here it is the Java Code
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TecAdminSeleniumTest {
public static void main(String[] args) throws IOException, InterruptedException {
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--no-sandbox");
WebDriver driver = new ChromeDriver(chromeOptions);
driver.get("https://google.com");
Thread.sleep(1000);
if (driver.getPageSource().contains("I'm Feeling Lucky")) {
System.out.println("Pass");
} else {
System.out.println("Fail");
}
driver.quit();
}
}
Error observed:
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: host: 'XXXXXXX', ip: 'XXXXXX', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.77-70.59.amzn1.x86_64', java.version: '1.8.0_25'
I keep getting the following exception :
Driver info: org.openqa.selenium.chrome.ChromeDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
at org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:182)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:150)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:139)
This error message...
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15' System info: host: 'XXXXXXX', ip: 'XXXXXX', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.77-70.59.amzn1.x86_64', java.version: '1.8.0_25'
...implies that there are some incompatibility between the version of the binaries you are using as follows:
Your Selenium Client version is 2.39.0 of 2013-12-16 16:11:15 which is more than 5 years older.
Your JDK version is 1.8.0_25 which is pretty ancient.
So there is a clear mismatch between the JDK v8u25 and Selenium Client v2.39
Solution
Upgrade JDK to recent levels JDK 8u191.
Upgrade Selenium to current levels Version 3.141.59.
Upgrade ChromeDriver to current ChromeDriver v2.45 level.
Keep Chrome version between Chrome v70-72 levels. (as per ChromeDriver v2.45 release notes)
Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
Free Up and Release the Unused/Cached Memory in Ubuntu/Linux Mint before and after the execution of your Test Suite.
If your base Web Client version is too old, then uninstall it and install a recent GA and released version of Web Client.
Take a System Reboot.
Execute your #Test.

Subsequent calls to Geb Spock Test from GroovyConsole fail with UnreachableBrowserException

I'm running the below script (a GebReportingSpec test case) from within GroovyConsole.exe. It runs properly the first time, when GroovyConsole is launched. It opens up FF, runs the scenario, and then closes FF on quitting the browser.
However, when I run the same script again from the same GroovyConsole, I get an UnreachableBrowserException. It first calls setupSpec() method, and then on calling the go method inside the test case, it calls cleanupSpec()...
GEB:
0.9.0
Selenium:
2.26.0
Groovy:
2.0.5
FF:
14.0.1
JDK:
1.6.0_37 64-Bit
Script:
#Grapes([
#Grab("org.gebish:geb-core:0.9.0"),
#Grab("org.gebish:geb-spock:0.9.0"),
#Grab("org.seleniumhq.selenium:selenium-firefox-driver:2.26.0"),
//#Grab("org.seleniumhq.selenium:selenium-chrome-driver:2.26.0"),
#Grab("org.seleniumhq.selenium:selenium-support:2.26.0")
])
import geb.Browser
import geb.spock.GebReportingSpec
import org.openqa.selenium.firefox.*
class Google_Search_Test extends GebReportingSpec {
def setupSpec() {
println "Inside setupSpec()..."
browser.config.autoClearCookies = true
}
def cleanupSpec() {
println "Inside cleanupSpec()..."
println "Quitting browser..."
browser.quit()
}
def "google_search_wikipedia"() {
println "Inside google_search_wikipedia..."
when:
println "Going to google.com..."
go "http://google.com/ncr"
// make sure we actually got to the page
assert title == "Google"
// enter wikipedia into the search field
$("input", name: "q").value("wikipedia")
// wait for the change to results page to happen
// (google updates the page dynamically without a new request)
waitFor { title.endsWith("Google Search") }
// is the first link to wikipedia?
def firstLink = $("li.g", 0).find("a.l")
then:
firstLink.text() == "Wikipedia"
println "Finished test execution..."
}
}
GebConfig.groovy:
import org.openqa.selenium.firefox.*
import java.util.concurrent.*
driver = {
FirefoxProfile firefoxProfile = new FirefoxProfile()
firefoxProfile.setPreference("capability.policy.default.Window.frameElement", "allAccess")
def driver = new FirefoxDriver(firefoxProfile)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS)
driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS)
driver
}
waiting {
// all values are in seconds
timeout = 60
retryInterval = 0.5
}
reportsDir = "SeleniumReports"
Successful run:
Inside setupSpec()...
Inside google_search_wikipedia...
Going to google.com...
Finished test execution...
Inside cleanupSpec()...
Quitting browser...
JUnit 4 Runner, Tests: 1, Failures: 0, Time: 15739
Subsequent runs (Exception):
Inside setupSpec()...
Inside google_search_wikipedia...
Going to google.com...
Inside cleanupSpec()...
Quitting browser...
JUnit 4 Runner, Tests: 1, Failures: 2, Time: 687
Test Failure: google_search_wikipedia(Google_Search_Test)
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.26.0', revision: '18040', time: '2012-11-02 09:44:45'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_37'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:526)
at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:275)
at geb.Browser.go(Browser.groovy:371)
at geb.Browser.go(Browser.groovy:363)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at Google_Search_Test.google_search_wikipedia(Google_Search.groovy:27)
Caused by: org.openqa.selenium.WebDriverException: The FirefoxDriver cannot be used after quit() was called.
Build info: version: '2.26.0', revision: '18040', time: '2012-11-02 09:44:45'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_37'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:351)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:505)
... 5 more
Test Failure: google_search_wikipedia(Google_Search_Test)
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.26.0', revision: '18040', time: '2012-11-02 09:44:45'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_37'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:526)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:535)
at org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDriver.java:396)
at geb.report.PageSourceReporter.getPageSource(PageSourceReporter.groovy:42)
at geb.report.PageSourceReporter.writePageSource(PageSourceReporter.groovy:38)
at geb.report.PageSourceReporter.writeReport(PageSourceReporter.groovy:29)
at geb.report.CompositeReporter.writeReport(CompositeReporter.groovy:31)
at geb.Browser.report(Browser.groovy:698)
at geb.spock.GebReportingSpec.report(GebReportingSpec.groovy:43)
at geb.spock.GebReportingSpec.cleanup(GebReportingSpec.groovy:39)
Caused by: org.openqa.selenium.WebDriverException: The FirefoxDriver cannot be used after quit() was called.
Build info: version: '2.26.0', revision: '18040', time: '2012-11-02 09:44:45'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_37'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:351)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:505)
... 9 more
Geb has a concept of driver caching so that only one browser window is opened and reused and you're hitting a problem with using it from groovy console. Geb manages driver/browser instances for you and the cache is active throughout the life of the VM. You are getting the error because you are manually quitting the driver (which shouldn't be done if driver cache is enabled) and the VM has not been shut down (groovy console is still running between the two executions) which means that the browser managed by the driver retrieved from cache has been shut down.
You have two options here, the second better in my opinion:
do not quit the driver - one browser window will be opened and reused across the subsequent executions of your tests
use a build system, for example Gradle (an example Geb project built using Gradle is avaialable here) - this will shut down the VM after execution of your test(s) and it will also automatically shut down the browser

Resources