Appium的介紹和工作原理暫且不說(shuō)央渣,本篇只為說(shuō)明Appium的簡(jiǎn)單使用方法(mac版本)。
1射窒、Appium的下載安裝
Appium官方網(wǎng)址
http://appium.io/
客戶(hù)端下載地址
https://github.com/appium/appium-desktop/releases/tag/v1.5.0
建議使用客戶(hù)端進(jìn)行操作藏杖,當(dāng)然你也可以使用命令行的方式
> brew install node # get node.js
> npm install -g appium # get appium
> npm install wd # get appium client
> appium & # start appium
> node your-appium-test.js
2将塑、簡(jiǎn)單使用Appium客戶(hù)端
打開(kāi)Appium客戶(hù)端,默認(rèn)Host為0.0.0.0 蝌麸,Port為4723点寥,不需更改,直接點(diǎn)擊下方的Start Server按鈕開(kāi)啟即可祥楣。(也可將Host改為127.0.0.1)
開(kāi)啟后的Appium如下圖
如圖則表示appium已正式運(yùn)行开财,下面用客戶(hù)端來(lái)進(jìn)行自動(dòng)化打開(kāi)Android模擬器的計(jì)算器程序
1.點(diǎn)擊Appium右上角的放大鏡(Start Inspector Session)按鈕,進(jìn)入服務(wù)設(shè)定頁(yè)面
2.Desired Capabilities 配置
Desired Capabilities 在啟動(dòng) session 的時(shí)候是必須提供的误褪。
Desired Capabilities 本質(zhì)上是以 key value 字典的方式存放,客戶(hù)端將這些鍵值對(duì)發(fā)給服務(wù)端碾褂,告訴服務(wù)端我們想要怎么測(cè)試兽间。它告訴 appium Server這樣一些事情:
本次測(cè)試是啟動(dòng)瀏覽器還是啟動(dòng)移動(dòng)設(shè)備。
是啟動(dòng)Andorid還是啟動(dòng)iOS正塌。
啟動(dòng)Android時(shí)嘀略,app的package是什么。
啟動(dòng)Android時(shí)乓诽,app的activity是什么帜羊。
…
我們配置如下參數(shù)
{
"deviceName": "deviceName",
"automationName": "Appium",
"platformName": "Android",
"platformVersion": "7.0",
"appPackage": "com.android.calculator2",
"appActivity": ".Calculator"
}
deviceName:?jiǎn)?dòng)哪種設(shè)備,是真機(jī)還是模擬器鸠天?iPhone Simulator讼育,iPad Simulator,iPhone Retina 4-inch稠集,Android Emulator奶段,Galaxy S4…
automationName:使用哪種自動(dòng)化引擎。appium(默認(rèn))還是Selendroid剥纷。
platformName:使用哪種移動(dòng)平臺(tái)痹籍。iOS, Android, orFirefoxOS。
platformVersion:指定平臺(tái)的系統(tǒng)版本晦鞋。例如指的Android平臺(tái)蹲缠,版本為5.1。
appActivity:待測(cè)試的app的Activity名字悠垛。比如MainActivity线定、.Settings。注意鼎文,原生app的話(huà)要在activity前加個(gè)”.“渔肩。
appPackage:待測(cè)試的app的Java package。比如com.example.android.myApp, com.android.settings拇惋。
更多的參數(shù)配置 周偎,參考 這里
3.點(diǎn)擊右下角Start Session(確保移動(dòng)平臺(tái)抹剩,如模擬器等處于開(kāi)啟狀態(tài)),成功開(kāi)啟如下頁(yè)面則表示計(jì)算器自動(dòng)啟動(dòng)成功蓉坎。
到此澳眷,已成功使用Appium自動(dòng)化啟動(dòng)程序,下面我們開(kāi)始使用腳本語(yǔ)言來(lái)進(jìn)行自動(dòng)化的測(cè)試學(xué)習(xí)蛉艾。
3钳踊、使用腳本語(yǔ)言來(lái)使用Appium進(jìn)行自動(dòng)化測(cè)試
由于是進(jìn)行Android的自動(dòng)化測(cè)試,我們來(lái)直接使用java的語(yǔ)言進(jìn)行編寫(xiě)腳本語(yǔ)言勿侯,這里我們使用Android Studio來(lái)進(jìn)行簡(jiǎn)單的嘗試拓瞪。
1.創(chuàng)建Android工程
我們創(chuàng)建一個(gè)名如AppiumTest的Android工程,使用junit測(cè)試包助琐,來(lái)進(jìn)行測(cè)試的操作祭埂,記得導(dǎo)入引用包,現(xiàn)在一般新建的項(xiàng)目都自帶junit的引用包兵钮,即:
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
defaultConfig里也要設(shè)置
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
2.編寫(xiě)簡(jiǎn)單的測(cè)試腳本
在工程的test文件夾下蛆橡,添加一個(gè)測(cè)試類(lèi),如AppTest類(lèi)掘譬,如圖
添加如下代碼
@Test
public void main() throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "7.0");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.findElementById("com.android.calculator2:id/digit_1").click();
driver.findElementById("com.android.calculator2:id/digit_5").click();
driver.findElementById("com.android.calculator2:id/digit_9").click();
driver.findElementById("com.android.calculator2:id/del").click();
driver.findElementById("com.android.calculator2:id/op_sub").click();
driver.findElementById("com.android.calculator2:id/digit_9").click();
driver.findElementById("com.android.calculator2:id/digit_5").click();
driver.findElementById("com.android.calculator2:id/op_add").click();
driver.findElementById("com.android.calculator2:id/digit_7").click();
driver.findElementById("com.android.calculator2:id/digit_3").click();
driver.findElementById("com.android.calculator2:id/digit_6").click();
driver.findElementById("com.android.calculator2:id/eq").click();
Thread.sleep(2000);
String result = driver.findElementById("com.android.calculator2:id/result").getText();
System.out.println(result);
driver.quit();
}
注意此類(lèi)里需要引用兩個(gè)jar包
沒(méi)有jar的同學(xué)可在以下地址下載泰演,分別是
java-client-6.0.0-BETA4.jar http://mvnrepository.com/artifact/io.appium/java-client
selenium-server-standalone-3.11.0.jar https://www.seleniumhq.org/download/
代碼說(shuō)明:
driver.findElementById("com.android.calculator2:id/digit_1").click();
這里的Id,可在上面用客戶(hù)端打開(kāi)的頁(yè)面中查找葱轩,如
是指1按鈕的id睦焕,以此類(lèi)推。
3.運(yùn)行嘗試
點(diǎn)擊運(yùn)行酿箭,如下
4.運(yùn)行結(jié)果
如下顯示則表明運(yùn)行成功复亏,并可以看到模擬器的計(jì)算器自動(dòng)打開(kāi)并點(diǎn)擊運(yùn)行。
至此缭嫡,Appium的簡(jiǎn)單使用缔御,便告一段落,如有問(wèn)題妇蛀,請(qǐng)指正耕突,謝謝!