Code to Reproduce -
public class AppiumBaseTest {
protected AppiumDriver<WebElement> driver;
AppiumDriverLocalService appiumService;
String appiumServiceUrl;
String platform;
@BeforeTest
public void setup() throws Exception {
Properties prop = new Properties();
InputStream input;
appiumService = AppiumDriverLocalService.buildDefaultService();
appiumService.start();
appiumServiceUrl=appiumService.getUrl().toString();
System.out.println("Appium server started at " +appiumServiceUrl);
//platform=prop.getProperty("platform");
try {
input = new FileInputStream("src/test/java/Utils/appiumSession.properties");
prop.load(input);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("automationName", prop.getProperty("automationName"));
capabilities.setCapability("platformName",prop.getProperty("platformName"));
capabilities.setCapability("platformVersion", prop.getProperty("platformVersion"));
capabilities.setCapability("deviceName", prop.getProperty("deviceName"));
capabilities.setCapability("app", prop.getProperty("app"));
capabilities.setCapability("newCommandTimeout", "60");
/* Checking the platform */
platform = prop.getProperty("platform");
if (platform.equals("ANDROID")) {
driver = new AndroidDriver(new URL(appiumServiceUrl),capabilities);
} else if (platform.equals("IOS")) {
driver = new IOSDriver<WebElement>(new URL(appiumServiceUrl), capabilities);
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
} else {
throw new Exception("Unable to read platform");
}
Appium shows
Appium] Capabilities:
[Appium] app: â/Users/piyushkumar/Desktop/apk/SignUpApp-qa-release-2.6-unaligned.apkâ
[Appium] newCommandTimeout: â60â
[Appium] platformVersion: â5.1.1â
[Appium] automationName: âAppiumâ
[Appium] platformName: âAndroidâ
[Appium] deviceName: âGalaxy Nexus API 22â
**Then it shows **
[MJSONWP] Encountered internal error running command: Error: You must include a platformName capability
at AppiumDriver.getDriverForCaps (âŚ/âŚ/lib/appium.js:44:13)
at AppiumDriver.createSession$ (âŚ/âŚ/lib/appium.js:157:28)
**Finally it throws **
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/piyushkumar/Desktop/apk/SignUpApp-qa-release-2.6-unaligned.apk, newCommandTimeout=60, platformVersion=5.1.1, automationName=Appium, platformName=Android, deviceName=Galaxy Nexus API 22}], required capabilities = Capabilities [{}]
Build info: version: â3.4.0â, revision: âunknownâ, time: âunknownâ
System info: host: âPiyushs-MacBook-Pro.localâ, ip: âfe80:0:0:0:1876:bc3c:b563:7490%en0â, os.name: âMac OS Xâ, os.arch: âx86_64â, os.version: â10.12.4â, java.version: â1.8.0_144â
Driver info: driver.version: AndroidDriver
at io.appium.java_client.remote.AppiumProtocolHandShake.lambda$1(AppiumProtocolHandShake.java:96)
at java.util.Optional.orElseThrow(Optional.java:290)
at io.appium.java_client.remote.AppiumProtocolHandShake.createSession(AppiumProtocolHandShake.java:96)
at io.appium.java_client.remote.AppiumCommandExecutor.doExecute(AppiumCommandExecutor.java:111)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:162)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:88)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:112)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:73)
at Tests.AppiumBaseTest.setup(AppiumBaseTest.java:74)
**Line 74 is ** - driver = new AndroidDriver(new URL(appiumServiceUrl),capabilities);
Pom is -
io.appium
java-client
5.0.0-BETA8