一、AppiumJava介绍
AppiumJava是一个流行的自动化测试框架,能够跨平台进行测试,支持Android和iOS等多个平台的应用程序的测试。
其主要使用Java语言进行编写,在测试的过程中,主要使用WebDriver协议进行通讯,然后使用JSON Wire协议来进行测试操作,与其他的测试框架比较类似。
二、环境配置
配置AppiumJava测试环境需要考虑到以下几个方面:
1. 安装Java SDK
AppiumJava测试框架是使用Java编写的,因此在测试之前需要首先安装Java SDK。可以在Oracle官网下载Java SDK安装包,并进行安装。
2. 安装Eclipse IDE
AppiumJava测试框架的核心部分是Java代码,在实现测试时需要使用Java开发工具来进行代码编写和管理。Eclipse IDE是一个流行的Java开发工具,可以在Eclipse官网下载安装包并进行安装。
3. 安装Appium Desktop
AppiumJava测试框架需要连接到设备或者模拟器,依赖于Appium服务器来进行操作。Appium Desktop是一个开源的桌面应用程序,可以安装并启动Appium服务器,并提供用户界面进行测试脚本的编写和执行。可以在Appium Desktop官网下载并进行安装。
三、AppiumJava测试脚本编写
AppiumJava测试脚本是Java语言编写的,可以在Eclipse IDE中创建项目,引入相应的AppiumJava依赖库。
1. 元素定位
元素定位是AppiumJava测试中的一个重要步骤。可以使用以下方法进行。
1)通过id定位
WebElement element = driver.findElement(By.id("element_id"));
2)通过name定位
WebElement element = driver.findElement(By.name("element_name"));
3)通过class name定位
WebElement element = driver.findElement(By.className("element_class"));
4)通过tag name定位
WebElement element = driver.findElement(By.tagName("element_tag"));
5)通过xpath定位
WebElement element = driver.findElement(By.xpath("element_xpath"));
2. 执行测试用例
执行测试用例时,需要初始化WebDriver对象并启动Appium服务,然后进行元素定位和操作,并使用断言来进行结果判断。
public class AppiumTest { public static void main(String[] args) throws MalformedURLException, InterruptedException { // 初始化WebDriver对象 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator"); capabilities.setCapability(MobileCapabilityType.APP, "path/to/app.apk"); // 启动Appium服务并连接Android模拟器 URL url = new URL("http://127.0.0.1:4723/wd/hub"); AndroidDriverdriver = new AndroidDriver (url, capabilities); // 定位元素并执行操作 MobileElement el1 = (MobileElement) driver.findElementById("element_id"); el1.click(); // 断言测试结果 Assert.assertTrue(driver.findElementByName("result_name").getText().equals("expected_result")); // 关闭Appium服务 driver.quit(); } }
四、AppiumJava测试报告生成
生成测试报告是AppiumJava测试过程中的重要步骤。可以使用开源的ExtentReports库来进行测试报告的生成和管理。
1. 引入ExtentReports依赖库
在pom.xml文件中添加如下依赖库:
<dependency> <groupId>com.aventstack</groupId> <artifactId>extentreports</artifactId> <version>4.1.3</version> </dependency>
2. 生成测试报告
在测试脚本执行后,可以使用ExtentReports库生成测试报告,并保存为HTML文件。
public class AppiumTest { private static ExtentReports extent; private static ExtentTest test; public static void main(String[] args) throws MalformedURLException, InterruptedException { // 初始化WebDriver对象 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator"); capabilities.setCapability(MobileCapabilityType.APP, "path/to/app.apk"); // 启动Appium服务并连接Android模拟器 URL url = new URL("http://127.0.0.1:4723/wd/hub"); AndroidDriverdriver = new AndroidDriver (url, capabilities); // 创建ExtentReports测试报告对象 extent = new ExtentReports(); ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("test-output/extent.html"); extent.attachReporter(htmlReporter); test = extent.createTest("Test Title", "Test Description"); // 定位元素并执行操作 MobileElement el1 = (MobileElement) driver.findElementById("element_id"); el1.click(); // 断言测试结果 Assert.assertTrue(driver.findElementByName("result_name").getText().equals("expected_result")); // 记录测试日志 test.log(Status.PASS, "Test Passed"); // 关闭Appium服务 driver.quit(); // 生成测试报告 extent.flush(); } }
五、AppiumJava实战案例
以下是一个使用AppiumJava测试框架进行人脸识别App测试的案例。
测试目标:测试人脸识别App是否能够成功识别人脸并返回正确结果。
1. 元素定位
定位App界面上的元素,可以使用Appium Desktop提供的元素查看器来定位元素。
例如,需要定位人脸识别按钮,可以使用id或者name来定位。
MobileElement recognizeButton = (MobileElement) driver.findElementById("recognize_button_id");
2. 执行测试用例
点击人脸识别按钮,然后等待识别结果,最后使用断言来判断测试结果是否正确。
recognizeButton.click(); Thread.sleep(5000); MobileElement result = (MobileElement) driver.findElementById("result_id"); Assert.assertEquals("Test passed", "expected_result", result.getText());
3. 生成测试报告
使用ExtentReports库生成测试报告,然后保存为HTML文件。
extent = new ExtentReports(); ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("test-output/extent.html"); extent.attachReporter(htmlReporter); test = extent.createTest("人脸识别测试", "使用AppiumJava测试框架对人脸识别App进行测试"); recognizeButton.click(); Thread.sleep(5000); MobileElement result = (MobileElement) driver.findElementById("result_id"); Assert.assertEquals("Test passed", "expected_result", result.getText()); test.log(Status.PASS, "人脸识别测试通过"); extent.flush();
六、总结
AppiumJava测试框架是一个强大的自动化测试工具,使用Java编写的测试脚本可以跨平台进行测试,并能够对Android和iOS等多个平台的应用程序进行测试。
在使用AppiumJava进行测试之前,需要安装Java SDK、Eclipse IDE、Appium Desktop等工具,并对测试设备或模拟器进行配置。
测试脚本中主要使用WebDriver对象进行元素定位和操作,并使用断言进行结果判断。可以使用ExtentReports库生成测试报告,并保存为HTML格式文件。