Skip to content

Commit

Permalink
[java] Fixing null pointer exception in RemoteWebDriver instantiated …
Browse files Browse the repository at this point in the history
…by no-arg constructor.

When driver object created using default constructor, capabilities is null, results in null pointer exception in executeScript().

Signed-off-by: Alexei Barantsev <barancev@gmail.com>
  • Loading branch information
cjayswal authored and barancev committed Jan 24, 2021
1 parent 67dd6ac commit d16ecd2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
13 changes: 9 additions & 4 deletions java/client/src/org/openqa/selenium/remote/RemoteWebDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public class RemoteWebDriver implements WebDriver, JavascriptExecutor, HasInputD

// For cglib
protected RemoteWebDriver() {
init(new ImmutableCapabilities());
this.capabilities=init(new ImmutableCapabilities());
}

public RemoteWebDriver(Capabilities capabilities) {
Expand All @@ -129,7 +129,7 @@ public RemoteWebDriver(CommandExecutor executor, Capabilities capabilities) {
}
this.executor = executor;

init(capabilities);
capabilities=init(capabilities);

if (executor instanceof NeedsLocalLogs) {
((NeedsLocalLogs) executor).setLocalLogs(localLogs);
Expand All @@ -153,7 +153,7 @@ public static RemoteWebDriverBuilder builder() {
return new RemoteWebDriverBuilder();
}

private void init(Capabilities capabilities) {
private Capabilities init(Capabilities capabilities) {
capabilities = capabilities == null ? new ImmutableCapabilities() : capabilities;

logger.addHandler(LoggingHandler.getInstance());
Expand Down Expand Up @@ -185,6 +185,8 @@ private void init(Capabilities capabilities) {
LoggingHandler.getInstance(), logTypesToInclude);
localLogs = LocalLogs.getCombinedLogsHolder(clientLogs, performanceLogger);
remoteLogs = new RemoteLogs(executeMethod, localLogs);

return capabilities;
}

/**
Expand Down Expand Up @@ -286,6 +288,9 @@ protected void setCommandExecutor(CommandExecutor executor) {

@Override
public Capabilities getCapabilities() {
if(capabilities == null){
return new ImmutableCapabilities();
}
return capabilities;
}

Expand Down Expand Up @@ -480,7 +485,7 @@ public Object executeAsyncScript(String script, Object... args) {
}

private boolean isJavascriptEnabled() {
return capabilities.is(SUPPORTS_JAVASCRIPT);
return getCapabilities().is(SUPPORTS_JAVASCRIPT);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -785,4 +785,10 @@ public void canHandleResponseWithErrorCodeButNoExceptionReturnedByCommandExecuto
fixture.verifyCommands(
new CommandPayload(DriverCommand.GET_CURRENT_URL, emptyMap()));
}

@Test
public void noArgConstuctorEmptyCapabilitiesTest() {
RemoteWebDriver driver = new RemoteWebDriver() {}; // anonymous subclass
assertThat(driver.getCapabilities()).isEqualTo(new ImmutableCapabilities());
}
}

0 comments on commit d16ecd2

Please sign in to comment.