appium / java-client

Java language binding for writing Appium Tests, conforms to W3C WebDriver Protocol
Apache License 2.0
1.19k stars 755 forks source link

java.lang.NoClassDefFoundError: org/openqa/selenium/HasDownloads #2196

Closed Aman782739 closed 1 week ago

Aman782739 commented 1 week ago

Do I have the most recent component updates?

Is the component officially supported by the Appium team?

Is there an existing issue for this?

Current Behavior

java.lang.NoClassDefFoundError: org/openqa/selenium/HasDownloads at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at com.Serviceapp.Testcase.BaseClass.setup(BaseClass.java:54) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139) at org.testng.internal.invokers.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:69) at org.testng.internal.invokers.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:361) at org.testng.internal.invokers.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:296) at org.testng.internal.invokers.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:180) at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:122) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.testng.TestRunner.privateRun(TestRunner.java:829) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:437) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391) at org.testng.SuiteRunner.run(SuiteRunner.java:330) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256) at org.testng.TestNG.runSuitesLocally(TestNG.java:1176) at org.testng.TestNG.runSuites(TestNG.java:1099) at org.testng.TestNG.run(TestNG.java:1067) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.HasDownloads at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 61 more

Expected Behavior

Want to run the apk on mobile.

Minimal Reproducible Example

Base class- package com.Serviceapp.Testcase;

import java.net.MalformedURLException; import java.net.URL;

import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Optional; import org.testng.annotations.Parameters;

import com.Serviceapp.Utilities.Readconfiguration;

import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.MobileCapabilityType;

import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.DesiredCapabilities;

public class BaseClass { public static AndroidDriver driver; public static Logger logger;

Readconfiguration readconfig = new Readconfiguration();

public String number = Readconfiguration.getnumber();

@BeforeClass
@Parameters("browser")

public void setup(@Optional("Android") String br) throws MalformedURLException {
    System.out.println(6);
    logger = Logger.getLogger("Baseclass.class");
    System.out.println(7);
    PropertyConfigurator.configure("src/main/resources/log4j.properties");
    System.out.println(8);
    DesiredCapabilities dc = new DesiredCapabilities();
    System.out.println(9);
    dc.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
    dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    dc.setCapability(MobileCapabilityType.PLATFORM_VERSION, "14");
    dc.setCapability(MobileCapabilityType.DEVICE_NAME, "63fc090e");
    dc.setCapability("appPackage", "com.kentcustomerapp.com");
    dc.setCapability("appActivity", "com.kentcustomerapp.view.activity.SplashActivityKT");
    dc.setCapability(MobileCapabilityType.NO_RESET, true);
    System.out.println(10);

    // dc.setCapability(MobileCapabilityType.APP, "C:\\Users\\atyagi\\OneDrive -
    // KROSL\\Desktop\\Automated Build\\Practice_Builds\\Service app.apk");
    URL url = new URL("http://127.0.0.1:4723/wd/hub");
    System.out.println(11);
    driver = new AndroidDriver<WebElement>(url, dc);

    System.out.println(12);
}

@AfterClass
public void teardown() {
    if (driver != null) {
        driver.quit();
    }
    logger.info("Driver closed");
}

}

Dependencies-

4.0.0 Serviceapp Serviceapp 0.0.1-SNAPSHOT 1.8 1.8 io.appium java-client 7.6.0 org.testng testng 7.7.1 test io.github.bonigarcia webdrivermanager 5.2.2 org.apache.commons commons-lang3 3.12.0 junit junit 4.13.2 test org.seleniumhq.selenium selenium-java 4.20.0 org.apache.poi poi 5.2.3 org.apache.poi poi-ooxml 5.2.3 com.aventstack extentreports 5.0.9 commons-io commons-io 2.11.0 log4j log4j 1.2.17 io.reactivex.rxjava3 rxjava 3.1.6 org.freemarker freemarker 2.3.30 seleniumframework frameworkdesign 0.0.1-SNAPSHOT

Environment

Link to Appium Logs

No response

Further Information

No response

eglitise commented 1 week ago

io.appium java-client 7.6.0

org.seleniumhq.selenium selenium-java 4.20.0

These versions are not compatible. Please make sure to follow the compatibility matrix listed in the README.

Aman782739 commented 1 week ago

now i am using-

io.appium java-client 8.5.1 org.seleniumhq.selenium selenium-java 4.13.0

and getting new issue- java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.(java.net.URI, java.time.Duration, java.time.Duration, org.openqa.selenium.remote.http.Filter, java.net.Proxy, org.openqa.selenium.Credentials)' at io.appium.java_client.AppiumClientConfig.(AppiumClientConfig.java:62) at io.appium.java_client.AppiumClientConfig.defaultConfig(AppiumClientConfig.java:79) at io.appium.java_client.remote.AppiumCommandExecutor.(AppiumCommandExecutor.java:109) at io.appium.java_client.AppiumDriver.(AppiumDriver.java:101) at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:113) at com.Serviceapp.Testcase.BaseClass.setup(BaseClass.java:51) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139) at org.testng.internal.invokers.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:69) at org.testng.internal.invokers.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:361) at org.testng.internal.invokers.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:296) at org.testng.internal.invokers.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:180) at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:122) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.testng.TestRunner.privateRun(TestRunner.java:829) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:437) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391) at org.testng.SuiteRunner.run(SuiteRunner.java:330) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256) at org.testng.TestNG.runSuitesLocally(TestNG.java:1176) at org.testng.TestNG.runSuites(TestNG.java:1099) at org.testng.TestNG.run(TestNG.java:1067) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

Aman782739 commented 1 week ago

package com.Serviceapp.Testcase;

import java.net.MalformedURLException; import java.net.URL;

import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Optional; import org.testng.annotations.Parameters;

import com.Serviceapp.Utilities.Readconfiguration;

import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.MobileCapabilityType;

public class BaseClass { public static AndroidDriver driver; public static Logger logger;

Readconfiguration readconfig = new Readconfiguration();

public String number = Readconfiguration.getnumber();

@BeforeClass
@Parameters("browser")

public void setup(@Optional("Android") String br) throws MalformedURLException {
    System.out.println(6);
    logger = Logger.getLogger("Baseclass.class");
    System.out.println(7);
    PropertyConfigurator.configure("src/main/resources/log4j.properties");
    System.out.println(8);
    DesiredCapabilities dc = new DesiredCapabilities();
    System.out.println(9);
    dc.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
    dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    dc.setCapability(MobileCapabilityType.PLATFORM_VERSION, "14");
    dc.setCapability(MobileCapabilityType.DEVICE_NAME, "63fc090e");
    dc.setCapability("appPackage", "com.kentcustomerapp.com");
    dc.setCapability("appActivity", "com.kentcustomerapp.view.activity.SplashActivityKT");
    dc.setCapability(MobileCapabilityType.NO_RESET, true);
    System.out.println(10);

    // dc.setCapability(MobileCapabilityType.APP, "C:\\Users\\atyagi\\OneDrive -
    // KROSL\\Desktop\\Automated Build\\Practice_Builds\\Service app.apk");

// URL url = new URL("http://127.0.0.1:4723/wd/hub"); System.out.println(11); driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), dc);

    System.out.println(12);
}

@AfterClass
public void teardown() {
    if (driver != null) {
        driver.quit();
    }
    logger.info("Driver closed");
}

}

valfirst commented 1 week ago

@Aman782739 make sure you use compatible versions, please check the matrix