Selendroid 初学者示例教程

你有没有开发过 Android 并将其发布到 Google Play?如果你收到这样的用户评论,你会怎么做?

Selendroid 教程

当您将应用发布到 Google Play 时,必须对其进行充分测试以避免潜在的错误。在发布应用之前,应该执行大量测试场景。为了节省 测试 您需要一个测试工具。最好的测试工具之一 Android 应用是 Selendroid.

什么是 Selendroid?

Selendroid 是一个针对多类型移动应用程序的测试自动化框架: 本地人混合 Android 应用程式和 通过手机捐款 网页。

什么是 Selendroid

您可以使用 Selenium 2 个客户端 API。因为 Selendroid 仍然重复使用现有的 Selenium 网络基础设施

Selendroid 是一款功能强大的测试工具。它可用于 模拟器 和真实的 设备

什么是 Selendroid

我们为什么需要 Selendroid?

Selendroid 是一款出色的测试工具。但您可能仍会怀疑它的实用性。

我们为什么需要 Selendroid

本节将介绍 Selendroid 回答为什么你需要 Selendroid.

我们为什么需要 Selendroid

  • 您可以使用以下方式测试被测应用程序 Selendroid 无需对应用程序进行任何修改。您只需要二进制文件(APK) 安装在计算机上。为了在设备上安装二进制文件,测试应用程序和移动应用程序必须使用相同的签名密钥进行签名
  • Selendroid 测试应用可以同时与多个设备或模拟器交互。这是 Selendroid.因此,您可以使用各种 Android 设备检查兼容性。
  • Selendroid 可以模拟应用程序上的人类用户操作,例如设备上的触摸、滑动、拖放
  • 您可以在测试期间更改硬件设备(插入和拔出),而无需重新启动或停止测试。 Selendroid 自动识别新设备
  • 对应于 Android API 版本升级, Selendroid 还支持新的 Android API(从 API 10 到 API 19)
  • Selendroid 还有一些内置检查器工具可帮助您识别被测应用程序的 UI 元素。例如 ID 按钮、文本字段、文本视图……

Selendroid Archi质地

Selendroid 是基于 Android 仪表框架. Selendroid 测试基于 Selenium Web 驱动程序客户端 API,因此它支持与当前完全集成 Selenium 构架。

下图描述了 Selendroid

Selendroid Archi质地

Selendroid 包含4个主要组件:

Selendroid Archi质地

  • Web 驱动程序客户端 – Java 基于客户端库 Selenium.此库应安装在计算机上(用于开发测试用例)
  • Selendroid-Server – 运行被测应用程序的服务器 Android 设备或模拟器。这是 Selendroid 架构
  • Android 司机端应用程序——内置 Android 驱动程序、Web View 应用程序用于测试移动网络。
  • Selendroid-Standalone – 此组件用于安装 Selendroid 服务器和被测应用程序 (AUT)

入门 Selendroid

你已经知道了 Selendroid.现在让我们开始 Selendroid.

第一次测试前需要完成 3 个步骤 Selendroid

入门 Selendroid

设置一个 Selendroid 环境

Selendroid 可以在 Window 上工作, Linux 和 Mac OS。在本教程中,我们将设置 Selendroid 在 Windows 操作系统中。

在使用之前 Selendroid,你需要先安装以下包

  • Java 软件开发套件(SDK) (最低 1.6)

    您必须接受许可协议并下载 Java 安装程序(根据您的操作系统选择 x64 或 x86)

    设置一个 Selendroid 环境

    下载并安装 Java SDK 作为普通软件

  • 最新版 Android 软件开发套件(SDK)
  • 您的计算机必须至少有一个 Android 虚拟设备 (AVD),或者真实 Android 设备已插入 PC。
  • Selendroid 独立但有依赖关系, Selendroid 客户Selenium 客户
  • Eclipse 软件
  • 设置JAVA_HOME和ANDROID_HOME

    步骤1) 在 Windows 上,右键单击“计算机” -> 查看房源 -> 高级系统设置

    设置一个 Selendroid 环境

    步骤2) 显示“系统属性”窗口,选择“高级”选项卡 -> 环境变量

    设置一个 Selendroid 环境

    步骤3) 显示环境窗口,单击新建 -> 输入变量ANDROID_HOME如下

    设置一个 Selendroid 环境

    变量值是您已经安装的android-sdks的路径。

    找到系统变量Path -> 编辑 -> 在当前行后添加以下行

    设置一个 Selendroid 环境

    设置一个 Selendroid 环境

    与 ANDROID_HOME 类似,添加新变量 JAVA_HOME,其值如下

    设置一个 Selendroid 环境

    值是你的路径 Java JDK 安装

    步骤 4)重新启动电脑 -> 完成

如何启动 Selendroid

步骤 1)获取正在测试的应用程序

您可以使用现有的 Selendroid 测试应用程序来检查如何 Selendroid 作品(链接 到正在测试的示例应用程序)

下载完成后,复制此 APK 和上面的 Selendroid 独立 jar 文件到名为“Guru99”

步骤 2)启动 Selendroid

打开终端 Windows & 导航到在步骤 99 中创建的文件夹 Guru1。

运行以下命令

正式上线 Selendroid

输出将显示如下

正式上线 Selendroid

运行此命令后, Selendroid-独立 HTTP 服务器启动!此服务器的默认端口号为 4444。所有硬件设备以及 Android 虚拟设备,将被自动扫描并识别。 Selendroid 将识别 Android 目标版本和设备屏幕尺寸。

要检查 Android 目标版本以及设备信息,您可以在浏览器上启动以下URL: http://localhost:4444/wd/hub/status.

正式上线 Selendroid

Selendroid 基本命令

本节介绍一些基本 Selendroid-独立命令行。您可以使用它们来设置 Selendroid 测试环境

  1. 设置端口 Selendroid

    默认端口 Selendroid 是 4444。但您可以通过在启动命令中添加参数来更改为其他端口 Selendroid

    参数:-port [端口号]

    例如:

    Selendroid 基本命令

    在上面的命令中,5555 是新的端口。

因此,检查 URL Android 目标版本更改为: http://localhost:5555/wd/hub/status

  1. 指定被测试应用程序的位置(二进制 APK 文件)。 Selendroid 通常需要此文件的绝对路径

    参数:-app [文件路径]

    例如:

    Selendroid 基本命令

    在上面的命令中, Selendroid 自动根据“C:\Guru99App.apk”找到二进制文件,获取被测应用程序的信息。

    检查网址 http://localhost:4444/wd/hub/status,你会看到这些信息

    Selendroid 基本命令

  2. 更改端口 Selendroid 用于与仪器服务器进行通信。 Selendroid 使用端口 8080 作为默认端口

    参数:-selendroidServerPort [端口号]

    例如:

    Selendroid 基本命令

    端口现已更改为9000

  3. 更改启动模拟器的超时时间。单位是毫秒。

    参数:-timeoutEmulatorStart

    默认情况下, Selendroid 将等待 300,000 毫秒,直到模拟器启动。您可以通过命令更改为新的超时(200,000 毫秒)

    Selendroid 基本命令

    在此时间过后,如果模拟器无法启动, Selendroid 将抛出异常错误(查找设备/模拟器时发生错误。)然后停止运行

  4. 当您开始 Selendroid 在终端上执行命令,您将看到屏幕上打印出一条日志。您可以通过添加以下参数来更改看到的日志类型

    参数:-logLevel [日志类型]

    日志级别值为 ERROR、WARNING、INFO、DEBUG 和 VERBOSE。默认值:ERROR。

    例如,设置 Selendroid 要仅打印警告日志,可以使用此命令

    Selendroid 基本命令

    这款 Selendroid 仅打印 WARNING 日志

开始你的第一个测试 Selendroid

本节将逐步指导您使用以下工具创建第一个测试脚本: Selendroid

假设我们有一个 Android 测试名称为 Guru99App 的应用程序。该应用程序包括一个文本字段和一个名为“显示文本”的按钮。

点击此处下载 APK

首次测试 Selendroid

我们需要执行以下操作 测试用例 运用 Selendroid

测试用例 Condition 预期输出
  1. 启动应用程序
  2. 输入文本“Guru99 测试”添加到文本字段
  3. 按“显示文本”按钮
被测应用程序的二进制文件可用

设备已连接到 PC

文本“文本在此处显示”更改为文本

用户在文本字段中输入的内容

步骤1) 创建一个 Java 项目 Eclipse

步骤2) 添加硒和 Selendroid eclipse 环境中的 jar 文件

右键单击 Guru99Test 项目 -> 构建路径 -> 添加外部 ArchiVES

首次测试 Selendroid

导航到存储 jar 文件的文件夹

需要添加 3 个 jar 文件

  • selendroid-客户端-0.10.0.jar: Selendroid Java 客户端库
  • selendroid-standalone-0.11.0-带依赖项: Selendroid 独立服务器库
  • selenium-java-2.40.0.jar: Selenium Web 驱动程序库

全选 -> 选择打开以将 jar 文件添加到项目中

首次测试 Selendroid

步骤3) 添加上述库后,这些库将被添加到测试项目的参考库中。测试人员可以使用这些库的API来开发测试程序

创建包“com.guru.test”并添加 java 文件“Guru99Test.java”,如下所示

右键单击Guru99Test -> 全新 -> 小包装

首次测试 Selendroid

在 New 上的名称字段中输入 com.guru.test Java 打包对话框à完成

首次测试 Selendroid

这款 Eclipse 将在源代码结构中创建类似这样的列表文件夹和子文件夹

首次测试 Selendroid

步骤4) 安装 TestNG Eclipse

In Eclipse,帮助 -> 安装新软件,在安装对话框中,单击添加并输入以下内容

按确定 -> 接下来安装 TestNG

首次测试 Selendroid

步骤5) 将Guru99App.apk复制到Test App文件夹

首次测试 Selendroid

步骤6) 获取正在测试的应用程序的ID。

假设我们有一个名为Guru99App.apk的APK文件名。按照上一节中描述的步骤,在终端上执行命令

首次测试 Selendroid

在浏览器中打开以下链接: http://localhost:4444/wd/hub/status.

显示设备的信息,复制appId值“com.guru99app:1.0”

首次测试 Selendroid

步骤7) 打开文件 Guru99Test.java(在示例代码中)并进行如下更改

首次测试 Selendroid

要创建新的测试会话,请使用 Selendroid,您必须提供应用程序 ID,格式为:com.guru99app:1.0。此应用程序 ID 可在步骤 6 中识别。如果您没有设置与以下格式匹配的应用程序 ID, Android 设备,测试会话将抛出错误并且无法启动。

初始化找到的设备后, Selendroid 创建定制的 selendroid 服务器并安装 Selendroid 服务器

Selendroid 还安装被测应用程序并在设备上启动 selendroid-server

成功初始化测试会话后,开始在设备上执行测试命令。(例如输入文本、按下按钮……)。如果测试附加了测试会话,模拟器将自动停止

步骤8) 开始新的测试会话

启动 Selendroid 服务器在终端上使用以下命令,如步骤 6

首次测试 Selendroid

之后 Selendroid 服务器启动后,打开示例测试项目Guru99test Eclipse,双击文件 Guru77Test.java 的第 99 行,设置断点 -> 将显示一个点,如下所示

首次测试 Selendroid

右键单击 Guru99Test 项目开始测试会话 -> 调试方式 -> 测试 试验。

测试会话将按如下方式开始

首次测试 Selendroid

步骤9) 获取被测应用程序的 GUI 元素的 ID

测试会话成功启动后,打开浏览器,导航至 URL http://localhost:4444/inspector

您将看到被测应用程序启动如下

首次测试 Selendroid

将鼠标悬停在 AUT 的每个 UI 元素(按钮、文本字段、文本标签)上,每个元素的 ID 将在右侧窗格中突出显示

首次测试 Selendroid

完成此步骤后,即可获取上述每个UI元素的ID

  • 按钮显示文本ID:“按钮显示
  • 文本字段 ID:“编辑文本
  • 标签文本ID:“文本查看器

这些 ID 将在下一步中使用

步骤10) 像下面这样输入测试程序

使用以下测试程序 Selendroid 包括 3 个部分

设置测试:

以下是设置测试的代码,它将设置测试会话的条件。如果出现错误, Selendroid 将引发异常并且测试应用程序将停止。

代码中包含了对每个语句进行解释的注释。

package com.guru.test;
		
 import io.selendroid.SelendroidCapabilities;
		import io.selendroid.SelendroidConfiguration;
		import io.selendroid.SelendroidDriver;
		import io.selendroid.SelendroidLauncher;
		import io.selendroid.device.DeviceTargetPlatform;
		
		import org.openqa.selenium.By;
		import org.openqa.selenium.WebDriver;
		import org.openqa.selenium.WebElement;
		import org.testng.Assert;
		import org.testng.annotations.AfterSuite;
		import org.testng.annotations.BeforeSuite;
		import org.testng.annotations.Test;
		
 /**
		 * @author Guru99 Test App using Selendroid
			 * Application under test: Guru99App
		 *
		 */
		public
				class Guru99Test {
				
				     //Declare web driver variable
		    private WebDriver driver;
					   
   
		    /**
		     * Setup the environment before testing
		     * @throws Exception
			     */
		    @BeforeSuite
		    public
					void setUp() throws Exception {
							
        //Start selendroid-standalone during test
		        SelendroidConfiguration config = new SelendroidConfiguration();
			        
		      // Add the selendroid-test-app to the standalone server
		        config.addSupportedApp("Guru99App.apk");
			        
                 
		        //start the standalone server
		        SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
			        selendroidServer.launchSelendroid();
		        
		       // Create the selendroid capabilities
		        SelendroidCapabilities capa = new SelendroidCapabilities();
			        
        
		       // Specify to use selendroid's test app
		        capa.setAut("com.guru99app:1.0");
			       
		       // Specify to use the Android device API 19
		        capa.setPlatformVersion(DeviceTargetPlatform.ANDROID19);
			        
		        // Don't request simulator, use real device
		        capa.setEmulator(false);
			        
         
		        //capa.wait(10000000);
		        
		        // Create instance of Selendroid Driver
		        driver = new SelendroidDriver(capa);
					       
		    }
		

执行测试

以下是执行测试的代码。代码包含注释

以下是测试步骤

  1. 输入文本“Hello Guru”
  2. 点击“显示文本”按钮
  3. 等一会儿
  4. 验证应用程序是否在用户输入文本字段时显示文本(例如显示文本“Hello Guru”)
 /**
		     * Start execute the test case
		     * 01. Enter the text "Selendroid" to the textfield
		     * 02. Press OK button
		     * @throws Exception
			     */
		    @Test
		    public
					void selendroidTest() throws Exception {
							        
		        // Print the log 
		        System.out.print("Start executing test");
					        
		        // Find the input text field on screen
        // The id of this text field was get from step 9
		        WebElement inputField = driver.findElement(By.id("edtText"));
					        
		        // Verify that the text field enabled so user can enter text
		        Assert.assertEquals("true", inputField.getAttribute("enabled"));
					        
		        // Enter a text to text field
		        inputField.sendKeys("Hello Guru");        
			
         // click Show Text button
        // The id of this button was get from step 9
		        WebElement button = driver.findElement(By.id("btnShow"));
					        button.click();
		        
		        // Delay time to take effect
		        Thread.sleep(5000);
		        
		        //Find the label "Text Show Here" on screen
        // The id of this label was get from step 9
		        WebElement txtView = driver.findElement(By.id("txtView"));
					        
		        //Get the text display on screen
		        String expected = txtView.getText();
		        
		// Verify that the text which user enter on text field is same as text display on screen
		        Assert.assertEquals(expected, inputField.getText());        
		
     }

完成测试

以下代码将通过停止 Selendroid 驱动程序。

 /**
		     * Stop the Selendroid driver
		     * 
		     */
		    @AfterSuite
		    public
					void tearDown() {
					        driver.quit();
			    }

您可以在本文中包含的示例代码中看到详细信息。

步骤10) Connect Android 通过 USB 电缆将设备连接到 PC。注意事项 –

  • 请确保设备没有配置屏幕锁。
  • 设备必须通过 USB 插入运行 selendroid-standalone 组件的计算机。
  • 该设备至少应安装 Android Target 版本 API 10

步骤11) 运行测试应用程序:右键单击 Guru99test -> 运行为 -> TestNG test

首次测试 Selendroid

步骤10) 脚本开始执行如下

首次测试 Selendroid

步骤12) 测试完成执行后, TestNG 自动生成如下测试报告

首次测试 Selendroid

首次测试 Selendroid

干得好,你现在已经完成测试了。

总结

  • Selendroid 是一个非常强大的测试工具 Android 原生应用程序、混合应用程序以及 Web 应用程序。
  • 它既可以在真实设备中使用,也可以在模拟器上使用。
  • 它还允许您通过在多台设备上运行测试来并行运行测试。
  • 整个 Selendroid 套件由四个部分组成:
    • Web Driver 客户端,
    • Selendroid-服务器,
    • Android 驱动程式
    • Selendroid-独立
  • 使用 Selendroid 你需要 Java JDK, Android SDK 和 Eclipse 安装。