用于测试自动化的Java;初学者的代码执行问题

时间:2017-11-07 12:51:19

标签: java selenium testing automated-tests appium

我正在学习测试自动化,并且在尝试编写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

欢迎任何建议!

2 个答案:

答案 0 :(得分:0)

如果您没有基本的Java编程知识和Appium的新功能,那么您可以做的最好的方法是检查appium贡献者如何在java-client repository上为Android编写测试。

只是一些提示:

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

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

答案 1 :(得分:0)

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

ApiDemo.apk

我的模拟器/设备是Android 6(拥有Android 23)所以使用来自我的sdk文件的系统图像的apk文件。

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

REST我使用的当前版本

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版本上运行良好,我能够打开应用程序并与元素交互)。

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