Appium:java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;

Appium:java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;

我在尝试 运行 appium 测试时遇到上述错误。 我使用的罐子是:

我的lib文件夹中的jar:

我的应用程序在

之后出现
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), caps);

但是下一步,

driver.wait(5000);

失败,异常:

我是appium的初学者,因此下载了上面提到的jar文件查看依赖关系。我已经尝试了 jar 版本号的多种组合,但它仍然给出了异常。你能告诉我如何进行吗?我使用 Ant 构建项目。

我也使用过 java 客户端 6.1.0,但使用它甚至无法启动我的应用程序。我也使用了最新的 gson jar,它是 2.8.5

我的build.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<property name="build.dir" location="bin">
</property>
<property name="src.dir" location="src">
</property>
<property name="docs.dir" location="docs">
</property>
<property name="dist.dir" location="dist">
</property>
<property name="lib.dir" location="lib">
</property>
<property name="resources.dir" location="resources">
</property>
<path id="build.classpath">
    <fileset dir="${lib.dir}" includes = "gson-2.8.5.jar">
        <include name="*.jar"/>
    </fileset>
</path>
<pathconvert property="classpathProp" refid="build.classpath" />
<echo>Classpath is ${classpathProp}</echo>
<target name="init">
    <mkdir dir="bin"/>
    <mkdir dir="dist"/>
    <mkdir dir="docs"/>

</target>
<target name="clean">
    <delete dir="${build.dir}"/>
    <delete dir="${docs.dir}"/>
    <delete dir="${dist.dir}"/>
</target>
<target name="compile" depends="clean,init">
    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" includeantruntime="false">
    </javac>
</target>
<target name="main" depends="compile">
    <java classname="core.Trigger" classpath="${build.dir}" classpathref="build.classpath"></java>
</target>

  1. 你能更新 gson 库即 gson jar 到最新版本吗
  2. 我也没见过appium提供的direct wait方法。尝试在开始时使用隐式等待。

    driver.manage().timeouts().implicitlywait(10 timeunit.seconds)

  3. 还要提到 class 类型的 android 驱动程序

driver = new AndroidDriver[MobileElement](new URL("http://127.0.0.1:4723/wd/hub"), caps);

driver = new AndroidDriver[WebElement](new URL("http://127.0.0.1:4723/wd/hub"), caps);

  1. 还要确保您的 appium 服务器 运行 在正确的端口上。

注意 - 使用 [] 而不是更大和更小的括号,因为它们不会在页面上呈现。

对我来说,问题是由于使用了父 class Webdriver 而不是 Android 驱动程序。我想让它同时适用于应用程序和桌面。我以前见过这样的用法,但对我来说没用。