前面我已經(jīng)搭建好了appium所需要的環(huán)境,現(xiàn)在我以系統(tǒng)自帶的計(jì)算器app為測試對(duì)象虎韵,進(jìn)行學(xué)習(xí)易稠。
一、將測試機(jī)與PC連接
(本人使用的是真機(jī))通過Usb接口將真機(jī)與PC端連接起來包蓝,在安裝appium搭建環(huán)境中我們已經(jīng)安裝了SDK缩多,所以打開CMD命令窗口,用adb devices
命令來查看是否可以檢測到手機(jī)設(shè)備养晋,如果如下圖顯示出設(shè)備衬吆,則證明我們可以對(duì)手機(jī)進(jìn)行測試操作。
二、打開指定測試App的指定Activity
通過上一步操作,我已經(jīng)看到我的設(shè)備是可以操作的了冒嫡,那究竟應(yīng)該如何讓appium去自動(dòng)找到指定的APP和指定的Activity呢拇勃?想要打開指定的App,需要知道App的包名孝凌,同樣想要打開指定Activity也需要知道其名方咆,如何獲取蟀架?
1瓣赂、問公司的開發(fā)人員,一定可靠片拍。
2煌集、通過命令獲取:adb shell dumpsys window w |findstr \/ |findstr name=
(這條命令的作用是捌省,獲取當(dāng)前app和當(dāng)前Activity的名字苫纤,我現(xiàn)在手機(jī)已經(jīng)打開了計(jì)算器應(yīng)用)如圖:
三、打開uiautomatorviewer獲取元素
接下來需要用uiautomatorviewer
對(duì)測試app的元素(button纲缓、text Field)進(jìn)行抓取卷拘,比如通過id、class和text等來確定具體的元素祝高。 uiautomatorviewer是在android-sdk的一個(gè)工具栗弟,具體目錄\android-sdk-windows\tools\uiautomatorviewer.bat
。
操作:
1褂策、雙擊uiautomatorviewer.bat横腿,打開UI Automator viewer 窗口颓屑,如圖所示:
2斤寂、在手機(jī)與PC端連接的情況下,點(diǎn)擊 “Device screenshot”揪惦, 連接手機(jī)應(yīng)用的窗口將顯示出來遍搞,如圖:
3、測試“1+2=3”的用例器腋,在uiautomatorviewer界面溪猿,點(diǎn)擊“1”,選中該按鈕纫塌,查看右邊的panel來找到“text”或“resource-id” 或“class”的值诊县,如圖:
保存其:resource-id
保存其:resource-id
保存其:resource-id
![=按鈕.png](http://upload-images.jianshu.io/upload_images/1803308-6a2ad57f3cfef3c0.png?i
mageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
保存其:resource-id
四、創(chuàng)建java項(xiàng)目
我們已經(jīng)獲取到想要的元素措左,下一步就是用代碼編寫測試用例了依痊,打開eclipse軟件,創(chuàng)建一個(gè)java project 怎披,導(dǎo)入依賴胸嘁,如圖:
五瓶摆、測試源代碼
代碼實(shí)現(xiàn)1+2= 3的自動(dòng)化測試
package com.occall.ui;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
public class loginOccall2 {
private AppiumDriver driver;
@BeforeClass
public void setup() throws Exception {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android"); //指定測試平臺(tái)
cap.setCapability("deviceName", "71MBBLG26R76"); //指定測試機(jī)的ID,通過adb命令`adb devices`獲取
cap.setCapability("platformVersion", "5.1");
//將上面獲取到的包名和Activity名設(shè)置為值
cap.setCapability("appPackage", "com.meizu.flyme.calculator");
cap.setCapability("appActivity", "com.meizu.flyme.calculator.Calculator");
//A new session could not be created的解決方法
cap.setCapability("appWaitActivity","com.meizu.flyme.calculator.Calculator");
//每次啟動(dòng)時(shí)覆蓋session,否則第二次后運(yùn)行會(huì)報(bào)錯(cuò)不能新建session
cap.setCapability("sessionOverride", true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
}
@Test
public void plus(){
//獲取1
driver.findElementById("com.meizu.flyme.calculator:id/digit1").click();
//獲取+
driver.findElementById("com.meizu.flyme.calculator:id/plus").click();
//獲取2
driver.findElementById("com.meizu.flyme.calculator:id/digit2").click();
//獲取=
driver.findElementById("com.meizu.flyme.calculator:id/eq").click();
}
@AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
六性宏、啟動(dòng)Appium
手機(jī)設(shè)備連接到PC端群井,手機(jī)屏幕打開著。接著啟動(dòng)Appium毫胜,啟動(dòng)成功如下圖:
七书斜、運(yùn)行測試類
八、大功告成指蚁,注意查看運(yùn)行日志和appium控制臺(tái)日志
可以看到菩佑,手機(jī)端的計(jì)算器app,也會(huì)自動(dòng)出現(xiàn)1+2 = 3的自動(dòng)化輸入測試