APPIUM 教程:Android 和 iOS 移动应用测试
Appium 是什么?
APPIUM 是一个免费分发的开源移动应用 UI 测试 框架。Appium 允许原生、混合和网络应用测试,并支持在物理设备以及模拟器上进行自动化测试。它提供跨平台应用测试,即单个 API 适用于 Android 和 iOS 平台的测试脚本。
它依赖于移动设备操作系统。因为 APPIUM 拥有框架或包装器,可将 Selenium Webdriver 命令转换为 UIAutomation (iOS) 或 UIAutomator (Android) 命令,具体取决于设备类型,而不是任何操作系统类型。
Appium 支持所有拥有 Selenium 客户端库的语言,如 Java、Objective-C、Node.js 中的 JavaScript 、PHP、Ruby、Python、 C# 等。
APPIUM 如何工作?
- Appium 是一个使用 Node.js 平台编写的“HTTP 服务器”,并使用 Webdriver JSON 线协议驱动 iOS 和 Android 会话。因此,在初始化 Appium Server 之前,系统必须预装 Node.js。
- 当 Appium 下载并安装后,我们的机器上会设置一个暴露 REST API 的服务器。
- 它接收来自客户端的连接和命令请求,并在移动设备(Android / iOS)上执行该命令。
- 它返回 HTTP 响应。再次,为了执行此请求,它使用移动测试自动化框架来驱动应用程序的用户界面。例如:-
- 适用于 iOS 的 Apple Instruments(Instruments 仅在 Xcode 3.0 或更高版本以及 OS X v10.5 及更高版本中可用)
- 适用于 Android API level 16 或更高版本的 Google UIAutomator
- 适用于 Android API level 15 或更低版本的 Selendroid
使用 APPIUM 的先决条件
- 安装 Android SDK (Studio)[链接]-
- 安装 JDK (Java Development Kit) [链接]
- 安装 Eclipse [链接]
- 为 Eclipse 安装 TestNg [链接]
- 安装 Selenium Server JAR [链接]
- Appium 客户端库[链接]
- Google Play 上的 APK 应用信息 [链接]
- js(非必需 – 每当安装 Appium 服务器时,它默认会附带“Node.exe”和 NPM。它包含在当前版本的 Appium 中。)
- 安装 Appium Desktop
安装 Appium Desktop
Appium Studio 是一款开源 GUI 应用程序,用于安装 Appium Server。它捆绑了安装和使用 Appium Server 的所有先决条件。它还带有一个 Inspector,可以获取您应用程序的基本信息。它附带一个录制器,可以创建样板代码来自动化您的移动应用程序。
访问https://appium.node.org.cn/ 并点击“下载 Appium”。
对于 Windows,选择 exe 文件并下载。文件大小约为 162MB,下载时间取决于您的互联网速度。
点击下载的 exe 文件。
在 Windows 机器上,无需安装 Appium。它直接从 exe 运行。点击 exe 后,您将看到以下图像几分钟。
对于 Mac,您需要安装 dmg
接下来您将看到服务器启动窗口。它会填充默认的主机和端口选项,您可以更改。它还会提及所使用的 Appium 版本。
点击“启动服务器”按钮后,将在指定的主机和端口上启动一个新服务器。服务器日志输出将显示。
点击“新会话窗口”。
您可以输入所需的配置并启动会话。
APPIUM Inspector
类似于 Selenium IDE 录制和回放工具,Appium 也有一个“Inspector”用于录制和回放。它通过检查 DOM 录制和播放原生应用程序行为,并以任何所需语言生成测试脚本。但是,目前 Appium Inspector 不支持 Microsoft Windows。在 Windows 中,它会启动 Appium Server,但无法检查元素。不过,UIAutomator viewer 可以作为检查元素的替代方案。
在 Mac 机器上启动 Appium Inspector 的步骤:-
下载并启动您的 Appium 服务器,使用默认 IP 地址 0.0.0.0 和端口 4725。
- 从本地选择源文件或 .app 文件进行测试。
- 勾选“应用路径”复选框以启用“选择”按钮。
现在,点击“选择”按钮将提供浏览并从本地驱动器中选择测试文件的选项。
在 Mac 机器上启动模拟器。
点击右上角的“启动”按钮,这将启用一个蓝色图标。再次点击此蓝色图标,它将打开 Appium Inspector 和预选应用程序的模拟器。
– 启动 Appium Inspector 将以列式结构显示元素层次结构。此外,用户可以使用“轻触”、“滑动”等按钮执行操作。
点击“停止”按钮停止录制。
将 Android 模拟器连接到 Appium
在您的系统中安装 Android SDK。
转到控制面板 >> 系统和安全 >> 系统,然后从左侧面板点击“高级系统设置”。在“系统属性”弹出窗口中,点击“高级”选项卡,然后点击“环境变量”按钮。
现在,从“环境变量”弹出窗口中,双击“Path”并设置 ANDROID_HOME 变量,使其指向您的 SDK 目录。在路径中添加整个 SDK 文件夹路径。
例如 –
C:\User\ABC\Desktop\adt-bundled-windows-x86_64-20140321\sdk
启动您的 Android 模拟器或将任何 Android 设备连接到您的系统(请确保您的 Android 设备中已启用 Android 调试选项。要检查调试选项。请转到设备设置 >> 开发者选项 >> 勾选“调试选项”)。
打开命令提示符并导航到您的 Android SDK 的 \platform-tools\ 目录(例如 D:\adt-bundle-windows-x86_64-20130514\sdk\platform-tools)。
– 运行“adb devices”命令。您可以在命令提示符窗口中看到您连接的设备。(在 CMD 中输入“>adb devices” – 此命令将列出已连接的模拟器实例。例如:adb –s emulator-5554 install <.apk 文件位置>)
– 运行“adb start-server”命令。它将启动 ADB 服务器,Appium 将使用该服务器向您的 Android 设备发送命令。
现在,导航到您系统中的 Appium 目录,然后点击 Appium.exe 文件启动 Appium。
不要更改 IP 地址或端口号,然后点击“启动”按钮。您的 Appium 控制台将在 127.0.0.1:4723 启动,如下所示。
点击“开始”按钮,Appium 服务器开始在您的系统上运行。
用于原生 Android 应用(计算器)的 APPIUM 测试用例
) 在此处下载 ADT eclipse 插件或单独下载 ADT 捆绑包
打开 Eclipse 并创建新项目 >> 包 >> 类
在该新项目中导入 Selenium 库和 Testng 。
现在,为“Calculator.app”创建一个小程序以求和两个数字。
package src_Appium; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; //import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.*; public class Calculator { WebDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ //Set up desired capabilities and pass the Android app-activity and app-package to Appium DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("BROWSER_NAME", "Android"); capabilities.setCapability("VERSION", "4.4.2"); capabilities.setCapability("deviceName","Emulator"); capabilities.setCapability("platformName","Android"); capabilities.setCapability("appPackage", "com.android.calculator2"); // This package name of your app (you can get it from apk info app) capabilities.setCapability("appActivity","com.android.calculator2.Calculator"); // This is Launcher activity of your app (you can get it from apk info app) //Create RemoteWebDriver instance and connect to the Appium server //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @Test public void testCal() throws Exception { //locate the Text on the calculator by using By.name() WebElement two=driver.findElement(By.name("2")); two.click(); WebElement plus=driver.findElement(By.name("+")); plus.click(); WebElement four=driver.findElement(By.name("4")); four.click(); WebElement equalTo=driver.findElement(By.name("=")); equalTo.click(); //locate the edit box of the calculator by using By.tagName() WebElement results=driver.findElement(By.tagName("EditText")); //Check the calculated value on the edit box assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6"; } @AfterClass public void teardown(){ //close the app driver.quit(); } }
Appium 服务器和 Android 模拟器通过“AVD Manager”,然后点击“运行”>> TestNG。上述程序将在选定的模拟器上运行“Calculator.app”,结果将使用 TestNG 框架显示在 Eclipse 控制台中。
使用 APPIUM 的限制
- Appium 不支持测试低于 4.2 版本的 Android。
- 对混合应用测试的支持有限。例如:无法测试应用程序从 Web 应用切换到原生应用以及反向切换的操作。
- 不支持在 Microsoft Windows 上运行 Appium Inspector。
Appium 中常见的错误和故障排除步骤
错误 | 故障排除步骤 |
---|---|
错误:- 需要以下所需功能,但未提供:deviceName,platformName | 在 APPIUM 脚本中添加所需的 capabilities:deviceName, platformName。例如:capabilities.setCapability (“deviceName”,”Emulator”); capabilities.setCapability (“platformName”,”Android”); |
错误:找不到 adb。请使用 Android SDK 根目录路径设置 ANDROID_HOME 环境变量。 | 您可能需要在系统“环境变量”的“Path”列中设置 SDK 根目录路径 |
错误:org.openqa.selenium.SessionNotCreatedException:无法创建新会话。 | 您需要设置正确的 App 路径并重新启动 Appium 服务器。 |
如何在移动应用程序中查找 DOM 元素或 XPath ? | 使用“UIAutomatorviewer”查找 Android 应用程序的 DOM 元素。 |