Android使用Appium進(jìn)行自動(dòng)化測(cè)試

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.jpeg

如圖則表示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)成功蓉坎。
end.jpeg

到此澳眷,已成功使用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)掘譬,如圖


apptest.jpeg

添加如下代碼

@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包


image.png

沒(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è)面中查找葱轩,如


image.png

是指1按鈕的id睦焕,以此類(lèi)推。

3.運(yùn)行嘗試

點(diǎn)擊運(yùn)行酿箭,如下


image.png
4.運(yùn)行結(jié)果

如下顯示則表明運(yùn)行成功复亏,并可以看到模擬器的計(jì)算器自動(dòng)打開(kāi)并點(diǎn)擊運(yùn)行。


image.png

至此缭嫡,Appium的簡(jiǎn)單使用缔御,便告一段落,如有問(wèn)題妇蛀,請(qǐng)指正耕突,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末评架,一起剝皮案震驚了整個(gè)濱河市眷茁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纵诞,老刑警劉巖上祈,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡登刺,警方通過(guò)查閱死者的電腦和手機(jī)籽腕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纸俭,“玉大人皇耗,你說(shuō)我怎么就攤上這事∽岷埽” “怎么了郎楼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)窒悔。 經(jīng)常有香客問(wèn)我呜袁,道長(zhǎng),這世上最難降的妖魔是什么简珠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任傅寡,我火速辦了婚禮,結(jié)果婚禮上北救,老公的妹妹穿的比我還像新娘。我一直安慰自己芜抒,他們只是感情好珍策,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宅倒,像睡著了一般攘宙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拐迁,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天蹭劈,我揣著相機(jī)與錄音,去河邊找鬼线召。 笑死铺韧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缓淹。 我是一名探鬼主播哈打,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讯壶!你這毒婦竟也來(lái)了料仗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伏蚊,失蹤者是張志新(化名)和其女友劉穎立轧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氛改,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年帐萎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片平窘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吓肋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瑰艘,到底是詐尸還是另有隱情是鬼,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布紫新,位于F島的核電站均蜜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芒率。R本人自食惡果不足惜囤耳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偶芍。 院中可真熱鬧充择,春花似錦、人聲如沸匪蟀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)材彪。三九已至观挎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間段化,已是汗流浹背嘁捷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留显熏,地道東北人雄嚣。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佃延,于是被迫代替她去往敵國(guó)和親现诀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容