我是Appium的新用户,并且正在关注Appium教程,当我尝试运行脚本时,我遇到了以下错误:
Exception in thread “main” java.lang.NoClassDefFoundError: org/openqa/selenium/remote/AcceptedW3CCapabilityKeys
at io.appium.java_client.remote.NewAppiumSessionPayload.(NewAppiumSessionPayload.java:98)
at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:175)
at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
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:219)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:142)
at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:84)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:94)
at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:95)
at base.main(base.java:20)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.AcceptedW3CCapabilityKeys
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 15 more
我试图删除硒罐,重新启动Eclipse和模拟器,但没有任何好处。
这是我的脚本:
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 void main(String[] args) throws MalformedURLException {
File f = new File("src");
File fs = new File(f,"ApiDemos-debug.apk");
URL ServerURL = new URL("http://127.0.0.1:4723/wd/hub");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Demo");
cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
AndroidDriver<AndroidElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
}
}
答案 0 :(得分:0)
@Malek,嗨。 您是否创建了基于Maven的项目?
您能否确保您确实具有正确的最新依赖关系?显然,您缺少某些依赖项,或者maven没有从存储库中提取依赖项。 确定后,请注意:
如果有 硒和Java客户端依赖项,例如:
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
和
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.12.0</version>
</dependency>
它们可能彼此冲突。请删除硒依赖性,并保留java-client依赖性。
之后-
请调用mvn clean install
命令。您可以了解有关Maven lifecycle here的信息。
第二种尝试: 请确保您以正确的方式创建和初始化功能。 JSONWP和W3C Spec功能之间的区别您可以在this answer中找到此处。
最后一条建议-在Comparing and combining web and mobile test automation drivers文章中,您可能会得到一个可以根据自己的需要进行调整的工作代码示例。
希望这对您有所帮助。 问候, 尤金