您的位置:

AppiumJava修炼之路

一、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");
        AndroidDriver driver = 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");
        AndroidDriver driver = 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格式文件。