移动测试 – Selendroid Framework
移动测试 – Selendroid Framework
Selendroid 是一个测试自动化框架,用于测试 Android 原生和混合应用程序。Selendroid 测试是使用 Selenium Webdriver 客户端 API 编写的。
Selendroid 的好处
-
与 JSON Wire Protocol/Selenium 3 Ready 完全兼容。
-
无需修改被测应用程序即可使其自动化。
-
使用内置的 Android 驱动程序 webview 应用程序测试移动网络。
-
自动化本机或混合应用程序的相同概念。
-
UI 元素可以通过不同的定位器类型找到。
-
支持手势:高级用户交互 API。
-
现有的模拟器会自动启动。
-
Selendroid 支持硬件设备的热插拔。
-
作为一个节点完全集成到 Selenium Grid 中,用于扩展和并行测试。
-
多个 Android 目标 API 支持(10 到 19)。
-
内置检查器以简化测试用例开发。
-
Selendroid 可以在运行时使用您自己的扩展进行扩展。
-
Selendroid 可以同时与多个 Android 设备(模拟器或硬件设备)交互。
Selendroid 的缺点
这个工具的缺点是速度很慢,而且在一些内存小于 4GB 的机器上,它无法使用。
如何使用 Selendroid
步骤 1 – 使用 Robotium 的先决条件是 Java SDK(最低 1.6)。如果您的系统上没有安装 Java,请按照以下步骤操作。
-
从Oracle JavaSE下载 JDK 和 JRE
-
接受许可协议。
-
安装 JDK 和 JRE。
-
设置环境变量,如下面的屏幕截图所示。
第 2 步– 从SDK Android下载 Android Studio (由于文件的大小,这需要时间)。
- 双击 exe 并运行安装程序。
- 继续使用所有默认选项。
- 设置 ANDROID_HOME。
第 3 步– 从Selendroid下载 Selenium jar 文件和测试应用程序
- 下载 selenium jar 文件和测试应用程序。
- 将其放入任何文件夹,即 D:\SelendroidJars。
步骤 4 – 带有 USB 电缆的物理设备。
-
确保设备通过 USB 电缆连接到工作站。
-
确保已启用 USB 调试模式(在设置 → 开发人员选项下)。
使用 Selendroid 测试应用程序
要使用 Selendroid 测试应用程序,请按照以下步骤操作 –
步骤 1 – 安装 Eclipse。
第 2 步– 创建一个 Java 项目。
第 3 步– 将下载的 Selendroid jar 文件添加到新创建的项目中。
步骤 4 – 将下载的 Selenium jar 文件添加到新创建的项目中。
第 5 步– 在 Eclipse 中配置 testNG。
步骤 6 – 使用 USB 电缆将移动设备与系统连接。从设置下的开发人员选项中设置 USB 调试模式。
步骤 7 – 运行 Selendroid 服务器。打开命令提示符并编写以下代码并按 Enter –
java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk
Selendroid-standalone 将在端口 4444 上启动一个 http 服务器,并将扫描用户创建的所有 Android 虚拟设备 (avd) (~/.android/avd/)。
打开 Web 浏览器并导航到:http://localhost:4444/wd/hub/status。
第 8 步– 创建一个 Java 项目;在构建路径中添加 Selendroid 独立库、Selenium jar 和 JUnit 库。
步骤 9 – 在 Java 项目下创建包。
步骤 10 – 在包下创建一个类并编写以下代码。
package selTest; import io.selendroid.SelendroidDriver; import io.selendroid.common.SelendroidCapabilities; import io.selendroid.standalone.SelendroidConfiguration; import io.selendroid.standalone.SelendroidLauncher; 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; public class SelendroidTest { private WebDriver driver ; @BeforeSuite public void setUp() throws Exception { SelendroidConfiguration config = new SelendroidConfiguration(); config.addSupportedApp("selendroid-test-app-0.9.0.apk"); SelendroidLauncher selendroidServer = new SelendroidLauncher(config); selendroidServer.launchSelendroid(); SelendroidCapabilities caps = new SelendroidCapabilities("io.selendroid.testapp:0.9.0"); driver = new SelendroidDriver(caps); } @Test public void selendroidTest() throws Exception { WebElement inputField = driver.findElement(By.id("my_text_field")); Assert.assertEquals("true", inputField.getAttribute("enabled")); inputField.sendKeys("Selendroid"); Assert.assertEquals("Selendroid", inputField.getText()); WebElement button = driver.findElement(By.id("buttonTest")); button.click(); button = driver.findElement(By.id("button2")); button.click(); Thread.sleep(5000); button = driver.findElement(By.id("startUserRegistration")); button.click(); Thread.sleep(10000); WebElement element = driver.findElement(By.id("label_username")); String text = element.getText(); System.out.println(text); element = driver.findElement(By.id("inputUsername")); element.sendKeys("bob"); element = driver.findElement(By.id("inputEmail")); element.sendKeys("[email protected]"); element = driver.findElement(By.id("inputPassword")); element.clear(); element.sendKeys("test1233"); element = driver.findElement(By.id("inputName")); element.clear(); element.sendKeys("My Name "); element = driver.findElement(By.id("input_preferedProgrammingLanguage")); element.click(); element = driver.findElement(By.id("text1")); element.click(); element = driver.findElement(By.id("input_adds")); element.click(); element = driver.findElement(By.id("btnRegisterUser")); element.click(); element = driver.findElement(By.id("buttonRegisterUser")); element.click(); } @AfterSuite public void tearDown(){ driver.quit(); } }
步骤 11 – 使用 testNG 运行配置运行类。