执行基于appium的框架时抛出java.lang.NoSuchMethodError

问题描述 投票:0回答:1

我在上周一(昨天)完美运行的框架中遇到错误。代码没有改变,并且在eclipse中没有进行任何更新。今天,当我尝试运行测试时,出现错误:

java.lang.NoSuchMethodError:'void org.openqa.selenium.remote.http.ClientConfig。(java.net.URI,java.time.Duration,java.time.Duration,org.openqa.selenium.remote.http。过滤器,java.net.Proxy,org.openqa.selenium.Credentials)' 在 io.appium.java_client.AppiumClientConfig.(AppiumClientConfig.java:62) 在 io.appium.java_client.AppiumClientConfig.defaultConfig(AppiumClientConfig.java:79) 在 io.appium.java_client.remote.AppiumCommandExecutor。(AppiumCommandExecutor.java:109) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:92) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:117) 在 common.BaseConfigs.getDriver(BaseConfigs.java:38) 在 com.netflix.XXXTests.setUp(XXXTests.java:93) 在java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) 在 java.base/java.lang.reflect.Method.invoke(Method.java:577) 在 org.testng.internal.MethodInitationHelper.invokeMethod(MethodInitationHelper.java:133) 在 org.testng.internal.MethodInitationHelper.invokeMethodConsideringTimeout(MethodInitationHelper.java:62) 在 org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385) 在 org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:321) 在 org.testng.TestRunner.invokeTestConfigurations(TestRunner.java:637) 在 org.testng.TestRunner.beforeRun(TestRunner.java:627) 在 org.testng.TestRunner.run(TestRunner.java:589) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:377) 在 org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:332) 在 org.testng.SuiteRunner.run(SuiteRunner.java:276) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1212) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1134) 在 org.testng.TestNG.runSuites(TestNG.java:1063) 在 org.testng.TestNG.run(TestNG.java:1031) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

getDriver 方法如下:

public static AndroidDriver getDriver() 抛出 IOException{

    //read data from data.properties file to get device name, app package name and app activity name
    Properties prop = new Properties();
    FileInputStream fis = new FileInputStream(System.getProperty("user.dir") + "\\src\\resources\\data.properties");
    prop.load(fis);
    
    String deviceName = prop.getProperty("deviceName");
    String appPackage = prop.getProperty("appPackage");
    String appActivity = prop.getProperty("appActivity");
            
    UiAutomator2Options options = new UiAutomator2Options();
    options.setDeviceName(deviceName);
    options.setAutomationName("uiautomator2");
    options.setAppPackage(appPackage);
    options.setAppActivity(appActivity);
    options.setPlatformName("Android");
    options.disableWindowAnimation();
    options.setNewCommandTimeout(Duration.ofSeconds(180));
    
    AndroidDriver driver = null;
    
    try {
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), options);
    } catch (Exception e) {
        System.err.println("Appium session could not be started. Please check if Appium server is running.");
        e.printStackTrace();
    }
    
    return driver;
}

我也可以说,在其他机器上,具有相同的框架,一切都工作正常。

我在这里问之前做了什么:

  • 我在 pom.xml 中设置了我在 maven 上找到的最新 appium 和 selenium 版本
  • 我尝试了不同的appium和selenium配置
  • 我已经将open jdk更新为jdk-21并且在环境变量中更改了它
  • 我在Eclipse下的JRE系统库执行环境设置为JavaSE-18(jdk-10-0.1.1)
  • 我已将 eclipse 更新到版本 2023-09 (4.29.0)

我现在能做什么?我被困住了,我不知道接下来我能做什么。删除整个 .m 目录以下载所有依赖项可以帮助解决这个问题吗?

java selenium-webdriver appium
1个回答
0
投票

使用最新的appium版本8.6.0解决了该问题,该版本是问题发生当天发布的。

© www.soinside.com 2019 - 2024. All rights reserved.