您的位置:

掌握这些内容,打造优秀的Appium自动化测试框架

一、Appium的安装与配置

1、安装Appium

要使用Appium框架完成自动化测试,我们需要先安装Appium,可以到Appium官网下载对应版本的Appium进行安装。安装完毕后,可以在命令行中输入appium -v命令查看是否安装成功。


$ npm install -g appium
$ appium -v

2、安装iOS和Android平台支持组件

在使用Appium进行自动化测试时,需要根据不同平台安装和配置对应的支持组件,比如Android SDK、Java JDK、Xcode等。

针对Android平台,需要安装Android SDK,并通过SDK Manager下载对应的API版本和模拟器镜像。同时需要安装Java JDK,并配置环境变量。

针对iOS平台,需要安装Xcode和Xcode Command Line Tools,并配置相关环境变量。

3、创建模拟器

在Android模拟器使用前,需要先通过AVD Manager创建一个AVD(Android Virtual Device)。在Xcode中也可以通过Simulator创建对应的iOS模拟器。


//创建Android模拟器
$ android avd
//启动iOS模拟器
$ open -a Simulator

二、Appium自动化测试基础

1、Appium API的基本使用

在Appium中,可以通过WebDriver API和Mobile JSON Wire Protocol API进行自动化测试操作。其中WebDriver API提供了一些基本的测试操作,比如点击、滑动、输入等。而Mobile JSON Wire Protocol API可以对APP进行比较深入的操作,比如切换context、获取当前activity等。


//通过WebDriver API在APP上进行点击操作
driver.findElement(By.id("com.example.app:id/button")).click();

//通过Mobile JSON Wire Protocol API启动APP
driver.executeScript("mobile: launchApp", args);

2、Appium自动化测试框架架构

Appium自动化测试框架主要包括3个部分,分别是Appium Server、测试脚本和测试设备。其中Appium Server提供了对设备的管理和测试脚本的执行环境;测试脚本是针对具体APP编写的具体测试用例;测试设备包括真机和虚拟设备。


//启动Appium Server
$ appium

//编写测试脚本
driver.findElement(By.id("com.example.app:id/button")).click();

//连接测试设备
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "iPhone 11");
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("platformVersion", "14.0.1");
capabilities.setCapability("app", "/path/to/app/file");
IOSDriver driver = new IOSDriver(new URL("http://localhost:4723/wd/hub"), capabilities);

三、Appium自动化测试框架的优化

1、利用Page Object模式精简测试脚本

在APP自动化测试过程中,我们可能会编写很多测试脚本来测试APP的各种功能。使用Page Object模式可以将脚本中的元素定位和业务逻辑分离,使得测试脚本更加简洁易懂。


//Page Object示例代码
public class LoginPage {
    private AppiumDriver
    driver;
    private MobileElement usernameInput;
    private MobileElement passwordInput;
    private MobileElement loginButton;

    public LoginPage(AppiumDriver
     driver) {
        this.driver = driver;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    public void inputUsername(String username) {
        usernameInput.sendKeys(username);
    }

    public void inputPassword(String password) {
        passwordInput.sendKeys(password);
    }

    public void clickLoginButton() {
        loginButton.click();
    }
}

//测试脚本示例代码
LoginPage loginPage = new LoginPage(driver);
loginPage.inputUsername("example");
loginPage.inputPassword("password");
loginPage.clickLoginButton();

    
   

2、使用数据驱动优化测试用例

在编写测试脚本时,可能会遇到大量重复的测试用例,这会导致代码冗余和可维护性下降。使用数据驱动的方法,将测试数据和测试逻辑分离,可以降低测试用例的重复编写。


//使用TestNG中的@DataProvider注解
@DataProvider(name = "loginData")
public Object[][] loginDataProvider() {
    return new Object[][] {
        {"username1", "password1"},
        {"username2", "password2"},
        {"username3", "password3"}
    };
}

//测试脚本中传入测试数据
@Test(dataProvider = "loginData")
public void testLogin(String username, String password) {
    LoginPage loginPage = new LoginPage(driver);
    loginPage.inputUsername(username);
    loginPage.inputPassword(password);
    loginPage.clickLoginButton();
}

四、Appium自动化测试框架的高级应用

1、利用Appium提供的Hooks实现自动化测试的前置条件和后置处理

通过Hooks,我们可以在Appium自动化测试流程中加入前置条件或者后置处理,比如在测试用例执行前先启动APP,或者在测试用例执行结束后关闭APP。


//使用TestNG中的@BeforeSuite注解
@BeforeSuite
public void startApp() {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "iPhone 11");
    capabilities.setCapability("platformName", "iOS");
    capabilities.setCapability("platformVersion", "14.0.1");
    capabilities.setCapability("app", "/path/to/app/file");
    driver = new IOSDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
}

//使用TestNG中的@AfterSuite注解
@AfterSuite
public void closeApp() {
    driver.quit();
}

2、利用Appium提供的Grid实现多设备并发测试

通过Grid,我们可以将多个设备连接到同一个Appium Server上,并行执行多个测试用例,提高测试效率。


//启动一个Appium Server节点
$ appium --port 4723 --nodeconfig /path/to/nodeconfig.json

//nodeconfig.json示例代码
{
  "capabilities":
    [
      {
        "browserName": "android",
        "deviceName": "deviceOne",
        "platformName": "ANDROID"
      },
      {
        "browserName": "iphone",
        "deviceName": "deviceTwo",
        "platformName": "IOS"
      }
    ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4723/wd/hub",
    "host":"localhost",
    "port": 4723,
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": "localhost"
  }
}

五、总结

本文详细阐述了如何掌握Appium的安装与配置、自动化测试基础、自动化测试框架优化和高级应用。通过学习本文的内容,我们可以掌握Appium自动化测试框架的全部技能,打造优秀的Appium自动化测试框架。