>source

새로운 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

셀레늄 병을 제거하고 일식과 에뮬레이터를 아무런 이점없이 다시 시작하려고했습니다.

여기 내 스크립트가 있습니다 :

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);
} 
}

  • 답변 # 1

    @Malek, 안녕하세요. 메이븐 기반 프로젝트를 만들었습니까?

    올 바르고 최신의 의존성을 가지기를 원하십니까? 분명히 일부 종속성이 누락되었거나 maven이 저장소에서 종속성을 가져 오지 않았습니다. 확인 후 다음을 참고하십시오.

    만 있다면 셀레늄 및 자바 클라이언트 종속성 (예 :

    <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>
    
    

    그들은 서로 충돌 할 수 있습니다. 셀레늄 의존성을 제거하고 자바 클라이언트 의존성을 남겨 두십시오.

    그 후- mvn clean install 에 전화하십시오  명령. 여기에서 maven 라이프 사이클에 대해 배울 수 있습니다.

    두 번째 시도 옵션 : 올바른 방식으로 기능을 작성하고 초기화했는지 확인하십시오. JSONWP와 W3C 사양 기능의 차이점이 답변에서 얻을 수있는 내용은 다음과 같습니다.

    마지막으로 한 가지 조언-여기에서 웹 및 모바일 테스트 자동화 드라이버 비교 및 ​​결합 기사 당신은 당신의 필요에 따라 조정할 수있는 작업 코드의 예를 얻을 수 있습니다.

    이것이 당신에게 도움이되기를 바랍니다. 문안 인사, 유진

관련 자료

  • 이전 broadcastreceiver - Android의 MainActivity에서 배경 음악을 일시 중지/재생하는 방법은 무엇입니까?
  • 다음 python - UnboundLocalError가 발생합니다