appium簡介

1碳抄、簡介

Appium是一個(gè)開源測試自動(dòng)化框架犁苏,可用于原生,混合和移動(dòng)Web應(yīng)用程序測試。 它使用WebDriver協(xié)議驅(qū)動(dòng)iOS虎锚,Android和Windows應(yīng)用程序硫痰。

2、appium相關(guān)文檔

3窜护、appium優(yōu)勢

  • 跨平臺(tái)同時(shí)支持Android效斑、IOS
  • 支持多種語言:Java、Python柱徙、PHP缓屠、Ruby等
  • 不用為復(fù)雜的環(huán)境發(fā)愁
  • 如果你有selenium經(jīng)驗(yàn),直接上手

4护侮、appium生態(tài)工具

  • adb:Android的控制工具敌完,用于獲取Android的各種數(shù)據(jù)和控制
  • appium Desktop:內(nèi)嵌套了appium server和Inspector的綜合
  • appium server:appium的核心工具,命令行工具
  • appium clients:各種語言的客戶端封裝庫概行,用于連接appium server
  • Java蠢挡、Python弧岳、Ruby凳忙、Robotframework-appium
  • AppCrawler:自動(dòng)遍歷工具

5、Appium架構(gòu)原理

Appium是在手機(jī)操作系統(tǒng)自帶的測試框架基礎(chǔ)上實(shí)現(xiàn)的禽炬,Android和iOS的系統(tǒng)上使用的工具分別如下:

  • Android(版本>4.3):UIAutomator涧卵,Android 4.3之后系統(tǒng)自帶的UI自動(dòng)化測試工具。
  • Android(版本≤4.3):Selendroid腹尖,基于Android Instrumentation框架實(shí)現(xiàn)的自動(dòng)化測試工具柳恐。
  • IOS:UIAutomation(instruments框架里面的一個(gè)模板),IOS系統(tǒng)自帶的UI自動(dòng)化測試工具热幔。
appium.png

5.1乐设、運(yùn)行原理

首先在client(電腦)上運(yùn)行自動(dòng)化測試腳本,調(diào)用webdriver接口绎巨,然后appium server接收到client上發(fā)送過來的命令后近尚,將這些命令轉(zhuǎn)換為UIAutomator認(rèn)識(shí)的命令,然后由UIAutomator來在設(shè)備上執(zhí)行自動(dòng)化场勤。
appium架構(gòu)原理如上圖所示戈锻,由客戶端(appium client)和服務(wù)器(appium server)兩部分組成,客戶端與服務(wù)器端通過JSON Wire Protocol進(jìn)行通信和媳。

5.2格遭、appium服務(wù)器

Appium服務(wù)器是Appium框架的核心。它是一個(gè)基于Node.js實(shí)現(xiàn)的HTTP服務(wù)器留瞳。Appium服務(wù)器的主要功能是接受從Appium客戶端發(fā)起的連接拒迅,監(jiān)聽從客戶端發(fā)送來的命令,將命令發(fā)送給bootstrap.jar(iOS手機(jī)為bootstrap.js)執(zhí)行,并將命令的執(zhí)行結(jié)果通過HTTP應(yīng)答反饋給Appium客戶端璧微。

5.3骤竹、Bootstrap.jar

Bootstrap.jar是在Android手機(jī)上運(yùn)行的一個(gè)應(yīng)用程序,它在手機(jī)上扮演TCP服務(wù)器的角色往毡。當(dāng)Appium服務(wù)器需要運(yùn)行命令時(shí)蒙揣,Appium服務(wù)器會(huì)與Bootstrap.jar建立TCP通信,并把命令發(fā)送給Bootstrap.jar开瞭;Bootstrap.jar負(fù)責(zé)運(yùn)行測試命令懒震。

5.4、Appium客戶端

它主要是指實(shí)現(xiàn)了Appium功能的WebDriver協(xié)議的客戶端Library嗤详,它負(fù)責(zé)與Appium服務(wù)器建立連接个扰,并將測試腳本的指令發(fā)送到Appium服務(wù)器。現(xiàn)有的客戶端Library有多種語言的實(shí)現(xiàn)葱色,包括Ruby递宅、Python、Java苍狰、JavaScript(Node.js)办龄、Object C、PHP和C#淋昭。Appium的測試是在這些Library的基礎(chǔ)上進(jìn)行開發(fā)的俐填。

6、Appium組件

6.1翔忽、appium server

Appium Server就是Appium的服務(wù)端——一個(gè)web接口服務(wù)英融,使用Node.js實(shí)現(xiàn)。引用官網(wǎng)解釋說明歇式。


appium server.png

6.2驶悟、appium desktop

appium desktop~1.png
appium desktop~2.png
appium desktop~3.jpg

Appium Desktop是一款適用于Mac,Windows和Linux的開源應(yīng)用程序材失,它以美觀而靈活的用戶界面為您提供Appium自動(dòng)化服務(wù)器的強(qiáng)大功能痕鳍。
它是幾個(gè)Appium相關(guān)工具的組合:

  • Appium Server的圖形界面。您可以設(shè)置選項(xiàng)豺憔,啟動(dòng)/停止服務(wù)器额获,查看日志等...您也不需要使用Node的NPM來安裝Appium,因?yàn)镹ode運(yùn)行時(shí)與Appium Desktop捆綁在一起恭应。
  • 您可以使用Inspector查看應(yīng)用程序的元素抄邀,獲取有關(guān)它們的基本信息,并與它們進(jìn)行基本的交互昼榛。
    注意:Appium Desktop與Appium不同境肾。Appium Desktop是Appium的圖形前端剔难,帶有其他工具。 Appium Desktop以其自己的節(jié)奏發(fā)布奥喻,并擁有自己的版本控制系統(tǒng)偶宫。 就像國內(nèi)很多定制的Android系統(tǒng)有自己版本號(hào),但是都是基于一個(gè)Android系統(tǒng)版本封裝的环鲤。版本號(hào)不一定與Andriod原生系統(tǒng)版本號(hào)一致纯趋。
    主要功能:UI分析、錄制用例冷离、元素查找吵冒、Attach已有的session、云測試
    主界面介紹:Appium Desktop主界面包含三個(gè)菜單Simple西剥、Advanced痹栖、Pressets
  • Simple
Host:設(shè)置Appium server的ip地址
port:設(shè)置端口號(hào),默認(rèn)是4723不用修改
start server:啟動(dòng)Appium server
  • Advanced:高級(jí)參數(shù)配置瞭空,主要是Android揪阿、IOS設(shè)備,log相關(guān)配置
  • Pressets:將Advanced中的配置信息作為預(yù)設(shè)配置

6.3咆畏、appium client

因?yàn)锳ppium是一個(gè)C/S結(jié)構(gòu)南捂,有了服務(wù)端的肯定還有客戶端,Appium Clients就是客戶端鳖眼,它會(huì)給服務(wù)端Appium Server發(fā)送請求會(huì)話來執(zhí)行自動(dòng)化任務(wù)黑毅。就像我們?yōu)g覽器訪問網(wǎng)頁,瀏覽器是客戶端钦讳,通過操作發(fā)送請求服務(wù)器來獲取數(shù)據(jù)。我們可以使用不同的客戶端瀏覽器(IE枕面,F(xiàn)irefox,Chrome)訪問一個(gè)網(wǎng)站愿卒。Appium客戶端可以使用不同的語言來實(shí)現(xiàn),如Python潮秘,java等琼开。具體詳見下表:

Language/Framework Github Repo and Installation Instructions
Ruby https://github.com/appium/ruby_lib
Python https://github.com/appium/python-client
Java https://github.com/appium/java-client
JavaScript (Node.js) https://github.com/admc/wd
Objective C https://github.com/appium/selenium-objective-c
PHP https://github.com/appium/php-client
C# (.NET) https://github.com/appium/appium-dotnet-driver
RobotFramework https://github.com/jollychang/robotframework-appiumlibrary

7、Capability配置

7.1枕荞、什么是capability

desired capability的功能是配置Appium會(huì)話柜候。他們告訴Appium服務(wù)器您想要自動(dòng)化的平臺(tái)和應(yīng)用程序。
Desired Capabilities是一組設(shè)置的鍵值對(duì)的集合躏精,其中鍵對(duì)應(yīng)設(shè)置的名稱渣刷,而值對(duì)應(yīng)設(shè)置的值。(如:"platformName": "Android")Desired Capabilities主要用于通知Appium服務(wù)器建立需要的Session矗烛。
Appium的客戶端和服務(wù)端之間進(jìn)行通信都必須在一個(gè)Session的上下文中進(jìn)行辅柴。客戶端在發(fā)起通信的時(shí)候首先會(huì)發(fā)送一個(gè)叫作“Desired Capabilities”的JSON對(duì)象給服務(wù)器。服務(wù)器收到該數(shù)據(jù)后碌嘀,會(huì)創(chuàng)建一個(gè)session并將session的ID返回到客戶端涣旨。之后客戶端可以用該session的ID發(fā)送后續(xù)的命令。

7.2股冗、capability常用配置

  • 公有參數(shù)
公有參數(shù).png
  • Android
    Android-0.png
Android-1.png
Android-2.png
Android-3.png
  • iOS
    iOS-0.png
iOS-1.png

7.3霹陡、啟動(dòng)APP

capability.png
 # desired capability參數(shù) 
{ 
"platformName": "Android", 
"platformVersion": "8.0.0", 
"appPackage": "com.taobao.taobao", 
"appActivity": "com.taobao.tao.welcome.Welcome", 
"noReset": "true", 
"deviceName": "test" #此參數(shù)Android已忽略,但是不可或缺止状,所以隨便輸入就可 
}

7.4穆律、Inspector元素獲取

Inspector.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市导俘,隨后出現(xiàn)的幾起案子峦耘,更是在濱河造成了極大的恐慌,老刑警劉巖旅薄,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辅髓,死亡現(xiàn)場離奇詭異,居然都是意外死亡少梁,警方通過查閱死者的電腦和手機(jī)洛口,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凯沪,“玉大人第焰,你說我怎么就攤上這事》谅恚” “怎么了挺举?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烘跺。 經(jīng)常有香客問我湘纵,道長,這世上最難降的妖魔是什么滤淳? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任梧喷,我火速辦了婚禮,結(jié)果婚禮上脖咐,老公的妹妹穿的比我還像新娘铺敌。我一直安慰自己,他們只是感情好屁擅,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布偿凭。 她就那樣靜靜地躺著,像睡著了一般煤蹭。 火紅的嫁衣襯著肌膚如雪笔喉。 梳的紋絲不亂的頭發(fā)上取视,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音常挚,去河邊找鬼作谭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奄毡,可吹牛的內(nèi)容都是我干的折欠。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼吼过,長吁一口氣:“原來是場噩夢啊……” “哼锐秦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盗忱,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤酱床,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后趟佃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扇谣,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年闲昭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罐寨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡序矩,死狀恐怖鸯绿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情簸淀,我是刑警寧澤瓶蝴,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站啃擦,受9級(jí)特大地震影響囊蓝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜令蛉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狡恬。 院中可真熱鬧珠叔,春花似錦、人聲如沸弟劲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔乞。三九已至汇鞭,卻和暖如春凉唐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霍骄。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工台囱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人读整。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓簿训,卻偏偏與公主長得像,于是被迫代替她去往敵國和親米间。 傳聞我的和親對(duì)象是個(gè)殘疾皇子强品,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361