③Appium+java實(shí)現(xiàn)自動(dòng)化測試實(shí)例

前面我已經(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)行測試操作。

查看設(shè)備.png
記下設(shè)備名绳泉,測試代碼要使用逊抡。

二、打開指定測試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)用)如圖:

獲取包名.png
三、打開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 窗口颓屑,如圖所示:


uiautomatorviewer.png

2斤寂、在手機(jī)與PC端連接的情況下,點(diǎn)擊 “Device screenshot”揪惦, 連接手機(jī)應(yīng)用的窗口將顯示出來遍搞,如圖:

Paste_Image.png

3、測試“1+2=3”的用例器腋,在uiautomatorviewer界面溪猿,點(diǎn)擊“1”,選中該按鈕纫塌,查看右邊的panel來找到“text”或“resource-id” 或“class”的值诊县,如圖:

1按鈕.png

保存其:resource-id

+按鈕.png

保存其:resource-id

2按鈕.png

保存其:resource-id

![=按鈕.png](http://upload-images.jianshu.io/upload_images/1803308-6a2ad57f3cfef3c0.png?i

Paste_Image.png

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)入依賴胸嘁,如圖:

Paste_Image.png
五瓶摆、測試源代碼

代碼實(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)成功如下圖:

Paste_Image.png
七书斜、運(yùn)行測試類
Paste_Image.png
八、大功告成指蚁,注意查看運(yùn)行日志和appium控制臺(tái)日志
Paste_Image.png
Paste_Image.png

可以看到菩佑,手機(jī)端的計(jì)算器app,也會(huì)自動(dòng)出現(xiàn)1+2 = 3的自動(dòng)化輸入測試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凝化,一起剝皮案震驚了整個(gè)濱河市稍坯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搓劫,老刑警劉巖瞧哟,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枪向,居然都是意外死亡勤揩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門秘蛔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陨亡,“玉大人,你說我怎么就攤上這事深员「喝洌” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵倦畅,是天一觀的道長遮糖。 經(jīng)常有香客問我,道長叠赐,這世上最難降的妖魔是什么欲账? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮芭概,結(jié)果婚禮上赛不,老公的妹妹穿的比我還像新娘。我一直安慰自己罢洲,他們只是感情好踢故,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般畴椰。 火紅的嫁衣襯著肌膚如雪臊诊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天斜脂,我揣著相機(jī)與錄音抓艳,去河邊找鬼。 笑死帚戳,一個(gè)胖子當(dāng)著我的面吹牛玷或,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播片任,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼偏友,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了对供?” 一聲冷哼從身側(cè)響起位他,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎产场,沒想到半個(gè)月后鹅髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡京景,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年窿冯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片确徙。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡醒串,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鄙皇,到底是詐尸還是另有隱情芜赌,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布育苟,位于F島的核電站较鼓,受9級(jí)特大地震影響椎木,放射性物質(zhì)發(fā)生泄漏违柏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一香椎、第九天 我趴在偏房一處隱蔽的房頂上張望漱竖。 院中可真熱鬧,春花似錦畜伐、人聲如沸馍惹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽万矾。三九已至悼吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間良狈,已是汗流浹背后添。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留薪丁,地道東北人遇西。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像严嗜,于是被迫代替她去往敵國和親粱檀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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