【发布时间】:2019-12-20 11:31:03
【问题描述】:
线程“main”中的异常 java.lang.NoClassDefFoundError: org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec
嗨!我刚刚开始了移动自动化课程并尝试运行自动化测试,但我想在硒方面遇到了一些问题。这是因为依赖关系吗?我在 stackoverflow 上检查了类似的问题,但没有想出如何解决它。你能帮帮我吗?
这是我的代码:
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
public class base {
public static AndroidDriver<AndroidElement> Capabilities() throws MalformedURLException {
File appdir=new File("src");
File app=new File(appdir,"ApiDemos-debug.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME,"Emulator1");
cap.setCapability(MobileCapabilityType.AUTOMATION_NAME,"uiautomator2");
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
AndroidDriver<AndroidElement> driver=new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
return driver;
}
这是我运行测试后看到的:
авг 13, 2019 11:26:55 PM io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
INFO: Detected dialect: W3C
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:262)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
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:213)
at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:323)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:86)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:96)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:94)
at base.Capabilities(base.java:22)
at basics.main(basics.java:12)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.codec.w3c.W3CHttpCommandCodec
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14 more
【问题讨论】:
-
我在一些答案中看到了这个解决方案,它可以在 maven 中设置,但我不知道如何
io.appium java-client 7.0.0 org.seleniumhq.selenium selenium-java 3.12.0 依赖> -
@Mykhailo Moskura - 你是对的,但不幸的是我不知道如何使用 maven 或使用依赖项(
-
您需要在 pom.xml 中的依赖项标签内添加依赖项,它位于项目的根路径中
标签: java selenium appium qa appium-android