【问题标题】:Java for test automation; beginner's issue with code execution用于测试自动化的 Java;初学者的代码执行问题
【发布时间】:2018-04-19 21:18:22
【问题描述】:

我正在学习测试自动化,但在尝试编写 Java 代码以打开 Android 模拟器然后在其上运行应用程序时遇到了困难。

这是我的代码:

    package com.company;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

public class Main {

    public static void main(String[] args) throws MalformedURLException {
    // write your code here

        File f=new File("src");
        File fs=new File(f, "ApiDemos-debug.apk");

        DesiredCapabilities cap=new DesiredCapabilities();
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Demo");
        cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());

        AndroidDriver driver=new AndroidDriver(new URL("http://127.0.0.1:4732/wd/hub"), cap);

    }
}

这是一个日志:

    Exception in thread "main" java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.openqa.selenium.json.Json.<clinit>(Json.java:47)
    at org.openqa.selenium.logging.profiler.HttpProfilerLogEntry.constructMessage(HttpProfilerLogEntry.java:37)
    at org.openqa.selenium.logging.profiler.HttpProfilerLogEntry.<init>(HttpProfilerLogEntry.java:29)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:180)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:109)
    at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:39)
    at com.company.Main.main(Main.java:25)

Process finished with exit code 1

欢迎提出任何建议!

【问题讨论】:

  • 这是 selenium / gson 的依赖版本不匹配
  • 您应该将 Appium 添加到您的帖子标签中。
  • @user180100 您的评论应该是一个答案并标记为已接受。它帮助我克服了同样的问题。

标签: java selenium testing automated-tests appium


【解决方案1】:

如果您没有基本的 Java 编程知识并且对 Appium 不熟悉,那么您可以做的最好的事情是在 java-client repository 上查看 appium 贡献者如何编写他们的 Android 测试。

只是一些提示:

  • BaseAndroidTest.java 告诉您如何以编程方式启动服务器创建 Android 驱动程序实例
  • AndroidElementTest.java 告诉你如何查找元素

花时间分析我提到的代码并在您的本地机器上使用它。希望这可以帮助您在学习自动化方面迈出下一步。

【讨论】:

    【解决方案2】:

    我的 ApiDemo.apk 使用了这些组合。我认为诀窍在于选择模拟器/设备和相关的 APK 文件。

    ApiDemo.apk

    我的模拟器/设备是 Android 6(具有 Android 23),因此使用了我的 sdk 文件中系统映像中的 apk 文件。

    (这个文件我是从sdk文件C:\Users\&lt;UserName&gt;\AppData\Local\Android\Sdk\system-images\android- 23\google_apis\x86\data\app\ApiDemos\ApiDemos.apk得到的)

    REST ALL 我使用当前版本的 jars

    Selenium-java-3.8.1
    appium java client-6.0.0.0-BETA1.jar
    common-lang3-3.7 jars
    gson 2.8.2.jar  (Need to download gson jar seprately)
    

    Appium 版本 1.6.5 或当前版本 1.7.1(在上述组合 jar 文件和 apk 文件上,它在两个 appium 版本上都运行良好,我能够打开应用程序并与元素交互)。

    提供整个配置,以便您可以开始进一步的课程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2010-09-15
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多