相關(guān)鏈接
官網(wǎng):http://appium.io/
使用Java編寫API文檔:http://appium.github.io/java-client/
學(xué)習(xí)文檔:https://www.cnblogs.com/fnng/p/4540731.html
技術(shù)展示
安裝(僅Windows)
若電腦上未安裝node.js淹朋,請(qǐng)先安裝node.js
- 下載安裝包幸乒,下載地址為:https://nodejs.org/en/download/
- 選擇對(duì)應(yīng)的版本,下載后固惯,打開安裝,一直下一步即可(可修改安裝目錄)
-
安裝完成后,檢測(cè)下path環(huán)境變量是否配置了Node.js,打開Windows命令提示符京闰,輸入命令"path",輸出如下結(jié)果:
image
Android的SDK安裝
相信Android開發(fā)人員都已安裝好Android的SDK了甩苛,但Android的環(huán)境變量你設(shè)置了么蹂楣?我本機(jī)的目錄為:E:\Android\Sdk。
下面設(shè)置環(huán)境變量:“我的電腦” 右鍵菜單 ---> 屬性 ---> 高級(jí) ---> 環(huán)境變量 ---> 系統(tǒng)變量 ---> 新建:
變量名 | 變量值 |
---|---|
ANDROID_HOME | E:\Android\Sdk |
找到 path 變量名—> “編輯” 添加:
變量名 | 變量值 |
---|---|
PATH | ;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools; |
安裝 Appium Server
可以在Appium官方網(wǎng)站上下載操作系統(tǒng)相應(yīng)的Appium版本讯蒲,下載地址:https://bitbucket.org/appium/appium.app/downloads/捐迫,
若無(wú)法下載,也可使用提供的百度網(wǎng)盤下載地址:
鏈接: https://pan.baidu.com/s/1UdbSk02TzUS8BQKzOQFYfw 提取碼: zus2
下載的 AppiumForWindows.zip 進(jìn)行解壓爱葵,點(diǎn)擊 appium-installer.exe 進(jìn)行安裝施戴。
[圖片上傳失敗...(image-ef357a-1566473978926)].png)
根據(jù)提示,一步一步進(jìn)行安裝萌丈,這里不再啰嗦赞哗。最終在會(huì)桌面上生成 Appium圖標(biāo) , 雙擊啟動(dòng),appium server 界面如下:
[圖片上傳失敗...(image-777f1-1566473978926)].png)
最后辆雾,打開Windows命令提示符肪笋,輸入“appium-doctor”命令,如果出現(xiàn)以下提示度迂,說(shuō)明你Appium所需要的各項(xiàng)環(huán)境都已準(zhǔn)備完成藤乙。
[圖片上傳失敗...(image-506b25-1566473978926)].png)
注:如果提示:“appium-doctor”不是內(nèi)部或外部命令,找到Appium的安裝目錄惭墓,例如:
E:\Appium\node_modules\.bin
添加到環(huán)境變量path下面(參考Java環(huán)境的設(shè)置)
Appium-desktop
Appium-desktop是什么
Appium-Server有一兩年沒有更新了坛梁。Windows版在 2015 年底止步于的 AppiumForWindows_1_4_16_1.zip。
于是腊凶,新的工具 Appium-desktop 來(lái)了划咐! 它來(lái)繼續(xù) Appium-Server的使命拴念,當(dāng)然, Appium-Server當(dāng)前仍然是可用的褐缠。
注:Appium-Server最高支持模擬器Android版本為6.0政鼠,推薦使用 Appium-desktop。
下載與安裝
下載地址:https://github.com/appium/appium-desktop/releases
根據(jù)自己的平臺(tái)選擇相關(guān)的包進(jìn)行下載队魏。本文以 Windows 為例,選擇 Appium-windows-1.12.1.exe 文件進(jìn)行下載,下載完成后遏佣,雙擊 exe 文件意敛,等待安裝完成即可钓猬。
啟動(dòng)運(yùn)行
雙擊打開桌面上紫色的 appium 圖標(biāo)
[圖片上傳失敗...(image-a9b10d-1566473978926)].png)
點(diǎn)擊 “啟動(dòng)服務(wù)器 V 1.12.1” 按鈕啟動(dòng)服務(wù)
[圖片上傳失敗...(image-77e1cf-1566473978926)].png)
現(xiàn)在可以啟動(dòng)移動(dòng)設(shè)備(真機(jī)或模擬器)综膀,編寫Appium自動(dòng)化測(cè)試腳本剧劝,可以通過(guò) Appium-desktop 來(lái)運(yùn)行測(cè)試拢锹。
連接真機(jī)測(cè)試
主要講解如何連接真機(jī)進(jìn)行測(cè)試卒稳。
- 手機(jī)通過(guò)USB連接電腦展哭,選擇傳輸文件(MTP)
[圖片上傳失敗...(image-974f88-1566473978926)].png) - 打開開發(fā)者選項(xiàng),允許USB調(diào)試茵休,允許USB安裝
[圖片上傳失敗...(image-fa3c7-1566473978926)].png) - 打開Windows命令提示符棵介,輸入"adb devices"唠雕,可彈出電腦是否連接真機(jī)岩睁,獲取到真機(jī)的devices
[圖片上傳失敗...(image-f26060-1566473978926)].png)
注:如果提示:“adb”不是內(nèi)部或外部命令邓夕,找到adb的安裝目錄,例如:
E:\Android\Sdk\platform-tools
添加到環(huán)境變量path下面(參考Java環(huán)境的設(shè)置)
java-client安裝與測(cè)試
此次主要講解的是使用 Java 語(yǔ)言編寫 appium 自動(dòng)化測(cè)試腳本点弯。
前提條件
- 安裝 Java 環(huán)境
- 安裝 IntelliJ IDEA 或 Eclipse (下面講解的是Eclipse)
- 安裝 Maven
Maven 安裝 Java-client
- 啟動(dòng)Eclipse汪榔,創(chuàng)建Maven項(xiàng)目
[圖片上傳失敗...(image-327473-1566473978926)].png) - 導(dǎo)入 appium 的 Java-client
[圖片上傳失敗...(image-170867-1566473978926)].png) - 輸入項(xiàng)目名稱蒲拉,id即可下一步
- 最后痴腌,pom.xml中的信息應(yīng)如下:
[圖片上傳失敗...(image-1de956-1566473978926)].png)
注:截止至4月26日為止雌团,最新版本為7.0.0锦援,最新版本號(hào),可在github Java-client開源項(xiàng)目上查看略板。
開始測(cè)試
編寫第一個(gè)Appium測(cè)試程序
啟動(dòng)APP
package com.test;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
public class TestLanuch {
private static String path = "E:\\Epoint\\epoint\\component\\FramePlugins\\workplatform\\release\\workplatform-release.apk";
public static void main(String[] args) throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "8ea41751");
capabilities.setCapability("automationName", "uiautomator2");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "8.0.0");
capabilities.setCapability("autoGrantPermissions", true);
capabilities.setCapability("app", path);
AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.quit();
}
}
- deviceName:?jiǎn)?dòng)哪種設(shè)備种玛,是真機(jī)還是模擬器,若是真機(jī)瓤檐,填寫"adb devices"獲取的設(shè)備號(hào)
- automationName:使用哪種自動(dòng)化引擎
- platformName:使用哪種移動(dòng)平臺(tái)
- platformVersion:指定平臺(tái)的系統(tǒng)版本赂韵。例如指的Android平臺(tái),版本為8.0.0
- autoGrantPermissions:是否自動(dòng)允許權(quán)限
- app:打包后挠蛉,apk在本地的路徑
- appPackage:應(yīng)用的包名
- appActivity:應(yīng)用啟動(dòng)頁(yè)
注:若手機(jī)上本無(wú)此APP祭示,使用參數(shù)app,不使用appPackage和appActivity谴古,若手機(jī)上有此APP质涛,使用appPackage和appActivity,不使用參數(shù)app讥电。
登錄APP
public static void testLogin(long time) {
if (timer == null) {
timer = new Timer();
}
timer.schedule(new TimerTask() {
@Override
public void run() {
if (driver.getPageSource().contains("com.epoint.workplatform:id/iv_cancel")) {
System.out.println("APP需要更新");
System.out.println("取消更新");
driver.findElement(By.id("com.epoint.workplatform:id/iv_cancel")).click();
if (timer != null) {
timer.cancel();
timer = null;
}
testLogin(2000);
} else if (driver.currentActivity().contains("MainActivity")) {
System.out.println("用戶已登錄過(guò)");
System.out.println(driver.getPageSource());
} else if (driver.currentActivity().contains("launcher.Launcher")) {
System.out.println("返回桌面");
} else if (driver.currentActivity().contains("GrantPermissionsActivity")) {
System.out.println("初次登錄");
System.out.println("授予權(quán)限");
driver.findElement(By.id("android:id/button1")).click();
if (timer != null) {
timer.cancel();
timer = null;
}
testLogin(5000);
} else if (driver.currentActivity().contains("LoginActivity")) {
driver.findElement(By.id("com.epoint.workplatform:id/et_loginid")).sendKeys("dywei");
driver.findElement(By.id("com.epoint.workplatform:id/et_pwd")).sendKeys("11111");
driver.findElement(By.id("com.epoint.workplatform:id/btn_login")).click();
System.out.println("登錄成功");
} else {
System.out.println("啟動(dòng)頁(yè)時(shí)間太長(zhǎng)");
System.out.println(driver.getPageSource());
}
}
}, time);
}
技術(shù)總結(jié)
測(cè)試腳本的編寫并不局限于Java蹂窖,支持多種語(yǔ)言轧抗,且可以實(shí)現(xiàn)一套測(cè)試腳本的編寫完成Android端和iOS端的自動(dòng)化測(cè)試恩敌,有興趣的可以研究研究。