selenium: Cannot run Safari Technology Preview with RemoteWebDriver

Meta -

OS: macOS Sierra 10.12.6 Selenium Version: v3.7.0 (Java client) Browser: Safari Technology Preview Browser Version: Release 43 (Safari 11.1, WebKit 12605.1.12)

Expected Behavior -

Should be able to launch Safari Technology Preview via DesiredCapabilites and RemoteWebDriver after calling SafariOptions.setUseTechnologyPreview().

Actual Behavior -

Setting technologyPreview flag has no effect on launching Safari Technology Preview. This ability last worked in v3.4.0 and has failed ever since.

I know SafariOptions.setUseTechnologyPreview() has been marked deprecated in v3.7.0, but it is still available for use, however is seems to be ignored and only launches the standard Safari browser.

I’m now only successful at getting Safari Technology Preview to launch if I call SafariDriver(SafariOptions).

Steps to reproduce -

The following attempts FAIL to launch Safari Technology Preview for v3.5.x, 3.6.0 and 3.7.0):

DesiredCapabilities caps = DesiredCapabilities.safari();
SafariOptions safariOptions = new SafariOptions();
safariOptions.useCleanSession(true);
safariOptions.setUseTechnologyPreview(true);  <-- deprecated in v3.7.0 but still avaialble
caps.setCapability(SafariOptions.CAPABILITY, safariOptions);
RemoteWebDriver remoteWebDriver = new RemoteWebDriver(HubUrl(), caps);
DesiredCapabilities caps = DesiredCapabilities.safari();
caps.setCapability(SafariOptions.CAPABILITY, "{cleanSession: true, technologyPreview: true});
RemoteWebDriver remoteWebDriver = new RemoteWebDriver(HubUrl(), caps);

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 22 (9 by maintainers)

Most upvoted comments

It is an issue for me also (java, v3.8.1 native safari driver, Safari v 11.0.2) When I created RemoteWebDriver with SafariOptions I get an error:
SessionNotCreatedException: Unable to create new service: SafariDriverService And no error logs on node instance When I use plain capabilities without SafariOptions (browserName, platformName, browserVersion) all works well

org.openqa.selenium.SessionNotCreatedException: Unable to create new service: SafariDriverService
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'ta-mac-01.local', ip: 'fe80:0:0:0:8e:8d6a:3d73:e7a6%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.2', java.version: '9.0.1'
Driver info: driver.version: unknown
Command duration or timeout: 284 milliseconds

	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.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
	at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
	at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	....
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
	at qa.ok.fw.test.SafariTest.connectionTest(SafariTest.java:33)
	.......(extra lines removed)
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create new service: SafariDriverService
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'ta-mac-01.local', ip: 'fe80:0:0:0:8e:8d6a:3d73:e7a6%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.2', java.version: '9.0.1'
Driver info: driver.version: unknown
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T18:33:54.468Z'
System info: host: 'OKULYCHOK-NB', ip: '192.168.56.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_152'
Driver info: driver.version: unknown
	at org.openqa.selenium.remote.server.ServicedSession$Factory.lambda$get$0(ServicedSession.java:208)
	at org.openqa.selenium.remote.server.ServicedSession$Factory.apply(ServicedSession.java:218)
	at org.openqa.selenium.remote.server.ActiveSessionFactory.lambda$apply$11(ActiveSessionFactory.java:167)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	.....
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:476)
	at org.openqa.selenium.remote.server.ActiveSessionFactory.apply(ActiveSessionFactory.java:170)
	at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$1(NewSessionPipeline.java:44)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	.....
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:476)
	at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$2(NewSessionPipeline.java:47)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	.....
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:476)
	at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:50)
	at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:77)
	at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:240)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:844)