As usually, before running mvn test
i executed mvn clean
, but this time a lot of things started downloading, once it finished i ran the code and got this error:
class org.openqa.selenium.Platform$22 cannot be cast to class java.lang.String (org.openqa.selenium.Platform$22 is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
I actually didnt change anything, it just stop working (Last time I checked that this worked was 1 week ago)
This is the code that generates the error:
DesiredCapabilitiescap = new DesiredCapabilities();
URL url = new URL("http://0.0.0.0:4723/wd/hub");
cap.setCapability("platformName", "Android");
cap.setCapability("deviceName", "emulator-5554");
cap.setCapability("avd", "Pixel_4_API_30");
cap.setCapability("appPackage", "com.myapp.dev");
cap.setCapability("appActivity", "com.myapp.splash.SplashActivity");
cap.setCapability("appWaitActivity","com.myapp.fulllogin.WelcomeActivity");
cap.setCapability("automationName", "UiAutomator2");
cap.setCapability("noReset", "false");
AppiumDriver driver = new AndroidDriver(url, cap);
There could be version incompatibilities. When I got the same error, I made the following changes and it worked:
In the pom.xml
upped the version of java-client
to 8.1.0
and added additional dependency selenium-support
with compatible version 4.2.0
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>8.1.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>4.2.0</version>
</dependency>
Optionally, made changes to the way capabilities are set for platform. Replaced capabilities.setCapability("platformName", "android")
with
capabilities.setCapability("appium:platformName", MobilePlatform.ANDROID)
import io.appium.java_client.remote.MobilePlatform;
...
DesiredCapabilities capabilities = new DesiredCapabilities();
...
capabilities.setCapability("appium:platformName", MobilePlatform.ANDROID);