1碳抄、簡介
Appium是一個(gè)開源測試自動(dòng)化框架犁苏,可用于原生,混合和移動(dòng)Web應(yīng)用程序測試。 它使用WebDriver協(xié)議驅(qū)動(dòng)iOS虎锚,Android和Windows應(yīng)用程序硫痰。
2、appium相關(guān)文檔
- Appium官網(wǎng):http://appium.io/
- Appium GitHub主頁:https://github.com/appium
- Appium官方論壇:http://discuss.appium.io/latest
- Testerhome中文社區(qū):https://testerhome.com/
- 官方中文文檔:http://appium.io/docs/cn/about-appium/intro/
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)化測試工具热幔。
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)解釋說明歇式。
6.2驶悟、appium desktop
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ù)
-
Android
Android-0.png
-
iOS
iOS-0.png
7.3霹陡、啟動(dòng)APP
# 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已忽略,但是不可或缺止状,所以隨便輸入就可
}