diff --git a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java index fb51b497d..5b490741a 100644 --- a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java +++ b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java @@ -237,7 +237,12 @@ public AppiumServiceBuilder withArgument(ServerArgument argument) { * @return the self-reference. */ public AppiumServiceBuilder withArgument(ServerArgument argument, String value) { - serverArguments.put(argument.getArgument(), value); + String argName = argument.getArgument().trim().toLowerCase(); + if ("--port".equals(argName) || "-p".equals(argName)) { + usingPort(Integer.valueOf(value)); + } else { + serverArguments.put(argName, value); + } return this; } @@ -435,6 +440,7 @@ private String parseCapabilities() { * @param nodeJSExecutable The executable Node.js to use. * @return A self reference. */ + @Override public AppiumServiceBuilder usingDriverExecutable(File nodeJSExecutable) { return super.usingDriverExecutable(nodeJSExecutable); } @@ -446,6 +452,7 @@ public AppiumServiceBuilder usingDriverExecutable(File nodeJSExecutable) { * @param port The port to use; must be non-negative. * @return A self reference. */ + @Override public AppiumServiceBuilder usingPort(int port) { return super.usingPort(port); } @@ -455,6 +462,7 @@ public AppiumServiceBuilder usingPort(int port) { * * @return A self reference. */ + @Override public AppiumServiceBuilder usingAnyFreePort() { return super.usingAnyFreePort(); } @@ -476,6 +484,7 @@ public AppiumServiceBuilder usingAnyFreePort() { * @param logFile A file to write log to. * @return A self reference. */ + @Override public AppiumServiceBuilder withLogFile(File logFile) { return super.withLogFile(logFile); } diff --git a/src/test/java/io/appium/java_client/localserver/ServerBuilderTest.java b/src/test/java/io/appium/java_client/localserver/ServerBuilderTest.java index 964555eed..652c55f4f 100644 --- a/src/test/java/io/appium/java_client/localserver/ServerBuilderTest.java +++ b/src/test/java/io/appium/java_client/localserver/ServerBuilderTest.java @@ -312,4 +312,26 @@ private static File findCustomNode() { } } } + + @Test public void checkAbilityToBuildServiceWithPortUsingFlag() throws Exception { + String port = "8996"; + String expectedUrl = String.format("http://0.0.0.0:%s/wd/hub", port); + + AppiumDriverLocalService service = new AppiumServiceBuilder() + .withArgument(() -> "--port", port) + .build(); + String actualUrl = service.getUrl().toString(); + assertEquals(expectedUrl, actualUrl); + } + + @Test public void checkAbilityToBuildServiceWithPortUsingShortFlag() throws Exception { + String port = "8996"; + String expectedUrl = String.format("http://0.0.0.0:%s/wd/hub", port); + + AppiumDriverLocalService service = new AppiumServiceBuilder() + .withArgument(() -> "-p", port) + .build(); + String actualUrl = service.getUrl().toString(); + assertEquals(expectedUrl, actualUrl); + } }