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

时间:2018-08-01 11:18:44

标签: java android ant appium-android java-client

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

我的lib文件夹中的jar:

The jars in my lib folder

我的应用在

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

但是在下一步中,

driver.wait(5000);

它失败,例外:

Exception I get

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

2 个答案:

答案 0 :(得分:0)

  1. 能否将gson库(即gson jar)更新到最新版本
  2. 我也从未见过appium提供的直接等待方法。尝试在开始时使用隐式等待。

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

  3. 还提到了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服务器在正确的端口上运行。

注意-由于括号不在页面上呈现,因此使用了[]而不是使用了大括号。

答案 1 :(得分:0)

对我来说,问题是由于使用父类Webdriver而不是Android驱动程序。我一直在寻找使其适用于应用程序和桌面的功能。我以前见过这样的用法,但对我来说却没用。