一、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自動化測試框架。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/252028.html