当前位置: 首页 > 知识库问答 >
问题:

使用java运行Appium时,线程“main”java.lang.NoClassDefFoundError中出现异常

靳茂
2023-03-14

试图使用Appium(Java)在android设备上自动化本机应用程序,但遇到了以下错误:

线程"main"中的异常java.lang.NoClassDefFoundError: org/openqa/selenium/远程/内部/JsonToWebElementConverter atwibu.main(wibu.java:21)

原因:java.lang.ClassNotFoundException:org.openqa.selenium.remote.internal。JsonToWebElementConverter位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)…1更多信息

这是我的代码:

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

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

public class wibu {

    public static void main(String[] args) throws MalformedURLException {

        DesiredCapabilities dc = new DesiredCapabilities();

        dc.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
        dc.setCapability("platformName", "android");
        dc.setCapability("appPackage", "com.facebook.katana");
        dc.setCapability("appActivity", "com.facebook.katana.LoginActivity");

        AndroidDriver<AndroidElement> ad = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),dc);

        String facebook_username = "username";
        String facebook_password = "password";

        MobileElement el1 = (MobileElement) ad.findElementByAccessibilityId("Username");
        el1.sendKeys(facebook_username);
        MobileElement el2 = (MobileElement) ad.findElementByAccessibilityId("Password");
        el2.sendKeys(facebook_password);
        MobileElement el3 = (MobileElement) ad.findElementByAccessibilityId("Log In");
        el3.click();
        MobileElement el4 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button[1]");
        el4.click();
        MobileElement el5 = (MobileElement) ad.findElementById("com.google.android.gms:id/credential_save_reject");
        el5.click();

    }
}

共有1个答案

莘康裕
2023-03-14

所以最终,

最初的问题是java client 7.6.0与Selenium 4不兼容。

为了使用Selenium 4,appium版本应为8。

最新的appium-java客户端版本是8.0.0-beta2

https://mvnrepository.com/artifact/io.appium/java-client/8.0.0-beta2

从Appium 7迁移到8

本指南中列出的破坏性更改列表:

https://github.com/appium/java-client/blob/master/docs/v7-to-v8-migration-guide.md

  • Android驱动程序

为了进行双重检查,这里提供了最新的API文档:

https://javadoc.io/doc/io.appium/java-client/latest/index.html

 类似资料: