0
votes

I've been trying to open tabs in browsers via Selenium and seems to work on all except Safari.

I'm trying the following:

public void openNewTab(String url) {
  ((JavascriptExecutor) getWebDriver()).executeScript("window.open('" + url + "','_blank');");
}

I've seen some answers in other languages to pass the --legacy argument but not an equivalent for Java.

Any hints?

Update

Some related answers include:

Here's the error I'm getting when trying the code on the following OS via SauceLabs:

  • Mac 10.13
  • Mac 10.14
  • iPad Pro (12.9 inch) Simulator

    org.openqa.selenium.InvalidArgumentException: Request body does not contain required parameter 'handle'. Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z' System info: host: 'itako4501.prod.miso', ip: 'fe80:0:0:0:ca0:e26a:55bf:fecd%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14', java.version: '9.0.4' Driver info: driver.version: unknown Command duration or timeout: 0 milliseconds at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 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.RemoteWebDriver.execute(RemoteWebDriver.java:552) at org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.window(RemoteWebDriver.java:903)

    Caused by: org.openqa.selenium.InvalidArgumentException: Request body does not contain required parameter 'handle'. Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z' System info: host: 'itako4501.prod.miso', ip: 'fe80:0:0:0:ca0:e26a:55bf:fecd%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14', java.version: '9.0.4' Driver info: driver.version: unknown Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' System info: host: 'x-r', ip: 'fe80:0:0:0:4ac:2f6c:527b:c271%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.6', java.version: '11.0.3' Driver info: driver.version: unknown

1

1 Answers

1
votes

This will open a new tab. tried on MacOs Mojave safari Version 12.1.2 (14607.3.9)

driver.get("http://google.com");
        ((JavascriptExecutor) driver).executeScript("window.open('http://cnn.com','_blank');");