Selendroid 初学者示例教程
你有没有开发过 Android 并将其发布到 Google Play?如果你收到这样的用户评论,你会怎么做?
当您将应用发布到 Google Play 时,必须对其进行充分测试以避免潜在的错误。在发布应用之前,应该执行大量测试场景。为了节省 测试 您需要一个测试工具。最好的测试工具之一 Android 应用是 Selendroid.
什么是 Selendroid?
Selendroid 是一个针对多类型移动应用程序的测试自动化框架: 本地人 和 混合 Android 应用程式和 通过手机捐款 网页。
您可以使用 Selenium 2 个客户端 API。因为 Selendroid 仍然重复使用现有的 Selenium 网络基础设施
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 包含4个主要组件:
- Web 驱动程序客户端 – Java 基于客户端库 Selenium.此库应安装在计算机上(用于开发测试用例)
- Selendroid-Server – 运行被测应用程序的服务器 Android 设备或模拟器。这是 Selendroid 架构
- Android 司机端应用程序——内置 Android 驱动程序、Web View 应用程序用于测试移动网络。
- Selendroid-Standalone – 此组件用于安装 Selendroid 服务器和被测应用程序 (AUT)
入门 Selendroid
你已经知道了 Selendroid.现在让我们开始 Selendroid.
第一次测试前需要完成 3 个步骤 Selendroid
设置一个 Selendroid 环境
Selendroid 可以在 Window 上工作, Linux 和 Mac OS。在本教程中,我们将设置 Selendroid 在 Windows 操作系统中。
在使用之前 Selendroid,你需要先安装以下包
- Java 软件开发套件(SDK)
(最低 1.6)
您必须接受许可协议并下载 Java 安装程序(根据您的操作系统选择 x64 或 x86)
下载并安装 Java SDK 作为普通软件
- 最新版 Android 软件开发套件(SDK)
- 您的计算机必须至少有一个 Android 虚拟设备 (AVD),或者真实 Android 设备已插入 PC。
- Selendroid 独立但有依赖关系, Selendroid 客户及 Selenium 客户
- Eclipse 软件
- 设置JAVA_HOME和ANDROID_HOME
步骤1) 在 Windows 上,右键单击“计算机” -> 查看房源 -> 高级系统设置
步骤2) 显示“系统属性”窗口,选择“高级”选项卡 -> 环境变量
步骤3) 显示环境窗口,单击新建 -> 输入变量ANDROID_HOME如下
变量值是您已经安装的android-sdks的路径。
找到系统变量Path -> 编辑 -> 在当前行后添加以下行
与 ANDROID_HOME 类似,添加新变量 JAVA_HOME,其值如下
值是你的路径 Java JDK 安装
步骤 4)重新启动电脑 -> 完成
如何启动 Selendroid
步骤 1)获取正在测试的应用程序
您可以使用现有的 Selendroid 测试应用程序来检查如何 Selendroid 作品(链接 到正在测试的示例应用程序)
下载完成后,复制此 APK 和上面的 Selendroid 独立 jar 文件到名为“Guru99”
步骤 2)启动 Selendroid
打开终端 Windows & 导航到在步骤 99 中创建的文件夹 Guru1。
运行以下命令
输出将显示如下
运行此命令后, Selendroid-独立 HTTP 服务器启动!此服务器的默认端口号为 4444。所有硬件设备以及 Android 虚拟设备,将被自动扫描并识别。 Selendroid 将识别 Android 目标版本和设备屏幕尺寸。
要检查 Android 目标版本以及设备信息,您可以在浏览器上启动以下URL: http://localhost:4444/wd/hub/status
.
Selendroid 基本命令
本节介绍一些基本 Selendroid-独立命令行。您可以使用它们来设置 Selendroid 测试环境
- 设置端口 Selendroid
默认端口 Selendroid 是 4444。但您可以通过在启动命令中添加参数来更改为其他端口 Selendroid
参数:-port [端口号]
例如:
在上面的命令中,5555 是新的端口。
因此,检查 URL Android 目标版本更改为: http://localhost:5555/wd/hub/status
- 指定被测试应用程序的位置(二进制 APK 文件)。 Selendroid 通常需要此文件的绝对路径
参数:-app [文件路径]
例如:
在上面的命令中, Selendroid 自动根据“C:\Guru99App.apk”找到二进制文件,获取被测应用程序的信息。
检查网址
http://localhost:4444/wd/hub/status
,你会看到这些信息 - 更改端口 Selendroid 用于与仪器服务器进行通信。 Selendroid 使用端口 8080 作为默认端口
参数:-selendroidServerPort [端口号]
例如:
端口现已更改为9000
- 更改启动模拟器的超时时间。单位是毫秒。
参数:-timeoutEmulatorStart
默认情况下, Selendroid 将等待 300,000 毫秒,直到模拟器启动。您可以通过命令更改为新的超时(200,000 毫秒)
在此时间过后,如果模拟器无法启动, Selendroid 将抛出异常错误(查找设备/模拟器时发生错误。)然后停止运行
- 当您开始 Selendroid 在终端上执行命令,您将看到屏幕上打印出一条日志。您可以通过添加以下参数来更改看到的日志类型
参数:-logLevel [日志类型]
日志级别值为 ERROR、WARNING、INFO、DEBUG 和 VERBOSE。默认值:ERROR。
例如,设置 Selendroid 要仅打印警告日志,可以使用此命令
这款 Selendroid 仅打印 WARNING 日志
开始你的第一个测试 Selendroid
本节将逐步指导您使用以下工具创建第一个测试脚本: Selendroid
假设我们有一个 Android 测试名称为 Guru99App 的应用程序。该应用程序包括一个文本字段和一个名为“显示文本”的按钮。
我们需要执行以下操作 测试用例 运用 Selendroid
测试用例 | Condition | 预期输出 |
---|---|---|
|
被测应用程序的二进制文件可用
设备已连接到 PC |
文本“文本在此处显示”更改为文本
用户在文本字段中输入的内容 |
步骤1) 创建一个 Java 项目 Eclipse
步骤2) 添加硒和 Selendroid eclipse 环境中的 jar 文件
右键单击 Guru99Test 项目 -> 构建路径 -> 添加外部 ArchiVES
导航到存储 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 文件添加到项目中
步骤3) 添加上述库后,这些库将被添加到测试项目的参考库中。测试人员可以使用这些库的API来开发测试程序
创建包“com.guru.test”并添加 java 文件“Guru99Test.java”,如下所示
右键单击Guru99Test -> 全新 -> 小包装
在 New 上的名称字段中输入 com.guru.test Java 打包对话框à完成
这款 Eclipse 将在源代码结构中创建类似这样的列表文件夹和子文件夹
步骤4) 安装 TestNG Eclipse
In Eclipse,帮助 -> 安装新软件,在安装对话框中,单击添加并输入以下内容
- 名称: TestNG
- 地点: http://selendroid.io/
按确定 -> 接下来安装 TestNG
步骤5) 将Guru99App.apk复制到Test App文件夹
步骤6) 获取正在测试的应用程序的ID。
假设我们有一个名为Guru99App.apk的APK文件名。按照上一节中描述的步骤,在终端上执行命令
在浏览器中打开以下链接: http://localhost:4444/wd/hub/status
.
显示设备的信息,复制appId值“com.guru99app:1.0”
步骤7) 打开文件 Guru99Test.java(在示例代码中)并进行如下更改
要创建新的测试会话,请使用 Selendroid,您必须提供应用程序 ID,格式为:com.guru99app:1.0。此应用程序 ID 可在步骤 6 中识别。如果您没有设置与以下格式匹配的应用程序 ID, Android 设备,测试会话将抛出错误并且无法启动。
初始化找到的设备后, Selendroid 创建定制的 selendroid 服务器并安装 Selendroid 服务器
Selendroid 还安装被测应用程序并在设备上启动 selendroid-server
成功初始化测试会话后,开始在设备上执行测试命令。(例如输入文本、按下按钮……)。如果测试附加了测试会话,模拟器将自动停止
步骤8) 开始新的测试会话
启动 Selendroid 服务器在终端上使用以下命令,如步骤 6
之后 Selendroid 服务器启动后,打开示例测试项目Guru99test Eclipse,双击文件 Guru77Test.java 的第 99 行,设置断点 -> 将显示一个点,如下所示
右键单击 Guru99Test 项目开始测试会话 -> 调试方式 -> 测试 试验。
测试会话将按如下方式开始
步骤9) 获取被测应用程序的 GUI 元素的 ID
测试会话成功启动后,打开浏览器,导航至 URL http://localhost:4444/inspector
您将看到被测应用程序启动如下
将鼠标悬停在 AUT 的每个 UI 元素(按钮、文本字段、文本标签)上,每个元素的 ID 将在右侧窗格中突出显示
完成此步骤后,即可获取上述每个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); }
执行测试
以下是执行测试的代码。代码包含注释
以下是测试步骤
- 输入文本“Hello Guru”
- 点击“显示文本”按钮
- 等一会儿
- 验证应用程序是否在用户输入文本字段时显示文本(例如显示文本“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
步骤10) 脚本开始执行如下
步骤12) 测试完成执行后, TestNG 自动生成如下测试报告
干得好,你现在已经完成测试了。
总结
- Selendroid 是一个非常强大的测试工具 Android 原生应用程序、混合应用程序以及 Web 应用程序。
- 它既可以在真实设备中使用,也可以在模拟器上使用。
- 它还允许您通过在多台设备上运行测试来并行运行测试。
- 整个 Selendroid 套件由四个部分组成:
- Web Driver 客户端,
- Selendroid-服务器,
- Android 驱动程式
- Selendroid-独立
- 使用 Selendroid 你需要 Java JDK, Android SDK 和 Eclipse 安装。