如何配置 Appium 和 Android Studio?

How to configure Appium and Android Studio?

大家好,我是 appium 的新手,我有 运行 我的第一个测试用例(Java 使用 TestNG)使用 eclipse,但现在我想切换到 Android Studio。请向我提供将 jar 和其他东西添加到 Android Studio

的分步过程

我推荐你使用 IntelliJ IDEA。您可以使用 gradle 创建项目,您可以在其中插入依赖项,但您可以通过 File -> Project structure -> Libraries -> (+) -> Java 轻松包含 .jars 然后 select 你的 .jar 文件。

IntelliJ IDEA 已经安装了 testNG,因此您无需安装它。

为了测试,您只需要 gson-2.2.2、java-client-4.0.0、selenium-java-2.53.1 罐子。

要连接您的设备,请使用 class

public class Setup {
    private final String DEVICE_NAME = "deviceName";
    private final String PLATFORM_NAME = "platformName";
    private final String PLATFORM_VERSION = "platformVersion";
    private final String APP_PACKAGE = "appPackage";
    private final String APP_ACTIVITY = "appActivity";

    private String deviceName = "Android SDK built for x86"; //device name can be found in device settings
    private String platformName = "Android"; 
    private String platformVersion = "6.0"; //version of your android
    private String port = "4723"; //port from Appium server
    private String url; 

    private String getIp() throws UnknownHostException {
        InetAddress ip = InetAddress.getLocalHost();
        return ip.getHostAddress();
    }

    public AndroidDriver establishConnection() throws MalformedURLException {
        try {
            url = String.format("http://%s:%s/wd/hub", getIp(), port);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        DesiredCapabilities capability = new DesiredCapabilities();
        capability.setCapability(DEVICE_NAME, deviceName);
        capability.setCapability(PLATFORM_NAME, platformName);
        capability.setCapability(PLATFORM_VERSION, platformVersion);

        capability.setCapability(APP_PACKAGE, "my.app.package");
        capability.setCapability(APP_ACTIVITY, "my.app.activity");

        return new AndroidDriver(new URL(url), capability);
    }
}

在此之后,您可以使用 @BeforeClass 创建新的 class,您可以在其中创建设置 class 的对象,调用 establishConnection(); 并初始化驱动程序并测试您的应用程序 UI 与 @Test 方法。不要忘记先在您的设备上安装 .apk :)

您需要在 Android Studio 中设置 Appium -

  1. Appium 服务器

  2. Appium Java 客户端 jar

  3. Selenium 客户端 jar

您可以观看此视频Step By Step Appium Setup with Android Studio

此致,

阿努贾

Android Studio 3.1.2, Min SDK 21. 如果Min SDK较低,可以尝试使用低版本的appium java-client.

  1. 通过 gradle 在 gradle 构建文件依赖项部分添加 Java 客户端 Jar。确保 您选择的客户端版本可用于您的 minimum/target android SDK。

    dependencies {
       testImplementation 'io.appium:java-client:4.1.2'
    }
    
  2. 您的 android 项目有一个 java 文件夹用于存放您的源文件。搜索括号中包含单词 (test) 的文件夹。在那里创建一个 java 文件。如果放在(androidTest)文件夹下,会运行陷入各种问题

  3. 将您的单元测试代码添加到该文件。就我而言,我使用的是 JUnit。

  4. 通过您喜欢的方式安装 appium 服务器。您可以通过 https://github.com/appium/appium-desktop/releases/ 找到安装可执行文件,或者您可以涉足 nodejs 及其包管理器。

  5. 配置 appium 服务器的设置以匹配单元测试的设置(即端口应该匹配)。

  6. 启动appium服务器。

  7. 右键单击您的测试并单击 运行 'XXXXX' 其中 XXXXX 是您的 class.

  8. Select 您想要的 emulator/physical 设备。

不需要像我在某些教程中看到的那样手动下载 jar 并添加它们。如果您按照上述步骤操作,您将拥有所需的东西。

我做了所有的步骤,但重建没有成功,然后我得到了这个作为解决方案: android {...} 闭包 build.gradle 为您的应用程序模块解决问题:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
}

所有的错误都解决了。我的 java 版本是 10,但没有用!!