Appium搭建

1.什么是Appium?

Appium 是一個開源断傲、跨平臺的自動化測試工具,用于測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺徐矩。Appium 驅(qū)動蘋果的 UIAutomation 庫和 Android 的 UiAutomator 框架粮宛,使用 Selenium 的 WebDriver JSON 協(xié)議窥淆。

2.基本原理:Client/Server Architecture

appium的核心其實是一個暴露了一系列REST API的server。這個server的功能其實很簡單:監(jiān)聽一個端口巍杈,然后接收由client發(fā)送來的command忧饭。翻譯這些command,把這些command轉(zhuǎn)成移動設備可以理解的形式發(fā)送給移動設備筷畦,然后移動設備執(zhí)行完這些command后把執(zhí)行結(jié)果返回給appium server词裤,appium server再把執(zhí)行結(jié)果返回給client。

在這里client其實就是發(fā)起command的設備鳖宾,一般來說就是我們代碼執(zhí)行的機器吼砂,執(zhí)行appium測試代碼的機器。狹義點理解鼎文,可以把client理解成是代碼渔肩,這些代碼可以是java/ruby/python/js的,只要它實現(xiàn)了webdriver標準協(xié)議就可以拇惋。
這樣的設計思想帶來了一些好處:
1.可以帶來多語言的支持周偎;
2.可以把server放在任意機器上抹剩,哪怕是云服務器都可以;(是的蓉坎,appium和webdriver天生適合云測試)

Session
session就是一個會話澳眷,在webdriver/appium,你的所有工作永遠都是在session start后才可以進行的袍嬉。一般來說境蔼,通過POST /session這個URL,然后傳入Desired Capabilities就可以開啟session了伺通。
開啟session后箍土,會返回一個全局唯一的session id,以后幾乎所有的請求都必須帶上這個session id罐监,因為這個seesion id代表了你所打開的瀏覽器或者是移動設備的模擬器吴藻。

Desired Capabilities
Desired Capabilities攜帶了一些配置信息。最重要的作用是告訴server本次測試的上下文弓柱。這次是要進行瀏覽器測試還是移動端測試沟堡?如果是移動端測試的話是測試android還是ios,如果測試android的話那么我們要測試哪個app矢空? server的這些疑問Desired Capabilities都必須給予解答航罗,否則server不買賬,自然就無法完成移動app或者是瀏覽器的啟動屁药。

3.搭建環(huán)境(android):

軟件準備:jdk粥血、android sdk、node酿箭、appium复亏、python、python-client缭嫡、selenium(ant,apache_maven)
1) appium:是一個開源缔御、跨平臺的自動化測試工具
2)node:用javascript編寫服務器端程序,讓javascript脫離web瀏覽器的限制妇蛀,像C#耕突、JAVA、Python等語言一樣在服務器端運行讥耗,這也讓一些熟悉Javascript的前端開發(fā)人員進軍到服務器端開發(fā)提供了一個便利的途徑有勾。
3)JDK:寫Java的applet和應用程序的程序開發(fā)環(huán)境
4)sdk:即Android Software Development Kit.它提供了在Windows/Linux/Mac平臺上開發(fā)Android應用的開發(fā)組件,包含了在Android平臺上開發(fā)移動應用程序的各種工具集古程。
5)python 是一種面向?qū)ο蟀ā⒅弊g式計算機編程語言,具有近二十年的發(fā)展歷史,成熟且穩(wěn)定雇逞。它包含了一組完善而且容易理解的標準庫荤懂,能夠輕松完成很多常見的任務。
6)selenium2:ThoughtWorks公司開發(fā)的web自動化測試工具
(ant:Java 開源組織 Apache 的一個項目塘砸,是一個基于 java 的 build 工具,apache_maven:項目管理及自動構(gòu)建工具)

4.安裝步驟

1.安裝jdk&配置JAVA_HOME環(huán)境變量:(略)java下載地址
運行java -version檢驗
2.安裝python(略)
3.安裝appium
1)brew install node # get node.js 安裝nodejs

npm是一個node包管理&分發(fā)工具节仿。有了npm,可以很快的找到特定服務要使用的包掉蔬,進行下載廊宪、安裝以及管理已經(jīng)安裝的包。

安裝完成后打開終端輸入node -v女轿,檢查是否安裝成功箭启。輸入npm,驗證node.js是否安裝成功蛉迹。

2)npm install -g appium # get appium
注意:通過npm安裝appium會比較慢(需翻墻)傅寡,可以嘗試內(nèi)網(wǎng)鏡像
安裝完成輸入 appium &/appium -v查看是否安裝成功
其他安裝方式:
bitbucket 百度云
個人推薦下載appium-1.4.13.dmg文件!北救!
3)npm install wd # get appium client
其他方式
pip install Appium-Python-Client
tar -xvf Appium-Python-Client-X.X.tar.gz
cd Appium-Python-Client-X.X
python setup.py install
或者:
git clone git@github.com:appium/python-client.git
cd python-client
python setup.py install
4)appium & # start appium

4.安裝android sdk

5.安裝ADT_bundle:(安裝Android Studio)

6.設置Android環(huán)境變量:ANDROID_HOME荐操、PATH
配置完成可以命令行輸入:Android,根據(jù)能否打開Android SDK Manager判斷是否配置完成。
或者:命令行鍵入appium-doctor命令檢驗環(huán)境
再或者:
/Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium-doctor.js

export ANDROID_HOME=/android-sdk-macosx
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home

Running Android Checks
? ANDROID_HOME is set to "/Users/yanglu/Downloads/android-sdk-macosx"
? JAVA_HOME is set to "/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home."
? ADB exists at /Users/yanglu/Downloads/android-sdk-macosx/platform-tools/adb
? Android exists at /Users/yanglu/Downloads/android-sdk-macosx/tools/android
? Emulator exists at /Users/yanglu/Downloads/android-sdk-macosx/tools/emulator
? Android Checks were successful.

5.運行appium

-查看安卓設備號:adb devices
-命令行運行appium:appium -a 127.0.0.1 -p 4723 -U 003bb116 --no-reset或者打開appium客戶端珍策,點擊lanch開啟appium服務

#堆糖app登錄登出簡易自動化方式
#可行機型:MI4托启、MI3
#其他機型可能需要稍作調(diào)整
#-*- coding: UTF-8 -*-
from appium.webdriver.common.touch_action import TouchAction
from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['device'] = 'android'
desired_caps['platformName'] = 'Android'
desired_caps['version'] = 'Default'
desired_caps['deviceName'] = 'Default'
desired_caps['unicodeKeyboard'] = 'True'
desired_caps['resetKeyboard'] = 'True'
desired_caps['appPackage'] = 'com.duitang.main'
desired_caps['appActivity'] = 'com.duitang.main.activity.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 準備登錄
sleep(8)
driver.find_element_by_xpath("http://android.widget.TextView[contains(@text, '我')]").click()
sleep(2)
name = TouchAction(driver)
name.press(x=666, y=1290).release().perform()
driver.find_element_by_id('com.duitang.main:id/account_et').send_keys(u'六六222')
driver.find_element_by_id('com.duitang.main:id/password_et').send_keys('123456')
driver.find_element_by_xpath("http://android.widget.TextView[contains(@text, '確定')]").click()
sleep(2)
driver.find_element_by_xpath("http://android.widget.TextView[contains(@text, '跳過')]").click()
# 準備登出
#此處緊接登錄過程,所以注釋掉一個步驟
#driver.find_element_by_xpath("http://android.widget.TextView[contains(@text, '我')]").click()
driver.find_element_by_id('com.duitang.main:id/iv_setting_menu').click()
 # 使用緩慢拖動swipe來拖動屏幕攘宙,duration表示持續(xù)時間
sleep(2)
driver.swipe(start_x=805, start_y=1666, end_x=805, end_y=956,duration=1000) 
driver.find_element_by_id('com.duitang.main:id/logout').click()
driver.find_element_by_xpath("http://android.widget.Button[contains(@text, '確定')]").click()

driver.quit()

參考文檔:
Appium Python API
Appium python API
Appium簡明教程
新手學appium

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驾中,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子模聋,更是在濱河造成了極大的恐慌,老刑警劉巖唠亚,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件链方,死亡現(xiàn)場離奇詭異,居然都是意外死亡灶搜,警方通過查閱死者的電腦和手機祟蚀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來割卖,“玉大人前酿,你說我怎么就攤上這事∨羲荩” “怎么了罢维?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丙挽。 經(jīng)常有香客問我肺孵,道長匀借,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任平窘,我火速辦了婚禮吓肋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瑰艘。我一直安慰自己是鬼,他們只是感情好,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布紫新。 她就那樣靜靜地躺著均蜜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弊琴。 梳的紋絲不亂的頭發(fā)上兆龙,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天,我揣著相機與錄音敲董,去河邊找鬼紫皇。 笑死,一個胖子當著我的面吹牛腋寨,可吹牛的內(nèi)容都是我干的聪铺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萄窜,長吁一口氣:“原來是場噩夢啊……” “哼铃剔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起查刻,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤键兜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后穗泵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體普气,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年佃延,在試婚紗的時候發(fā)現(xiàn)自己被綠了现诀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡履肃,死狀恐怖仔沿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尺棋,我是刑警寧澤封锉,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響烘浦,放射性物質(zhì)發(fā)生泄漏抖坪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一闷叉、第九天 我趴在偏房一處隱蔽的房頂上張望擦俐。 院中可真熱鬧,春花似錦握侧、人聲如沸蚯瞧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埋合。三九已至,卻和暖如春萄传,著一層夾襖步出監(jiān)牢的瞬間甚颂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工秀菱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留振诬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓衍菱,卻偏偏與公主長得像赶么,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脊串,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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

  • Appium 使用Appium的兩種方式: 1. npm安裝appium包辫呻; 2. 直接下載Appium桌面工具 ...
    Cassie測試路閱讀 2,017評論 0 2
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,266評論 25 707
  • Appium學習之路—環(huán)境搭建 說實話,Appium第一次接觸還是在testerhome看到的琼锋,介紹說這個框架可以...
    點點寒彬閱讀 9,993評論 10 34
  • 為什么一個人的時候放闺,什么委屈都受得了,什么難過都咽得下缕坎,可是一但有人安慰雄人,情緒就像泛濫的洪水,怎么也收不住念赶。
    慌張girl閱讀 148評論 0 0
  • 我估計再聯(lián)系你,你有可能不會理我了恰力。 你可能覺得我忘的太快了叉谜,也許還真的是吧。 但踩萎,這不是真的停局。 我也不知道該怎么...
    lisp閱讀 182評論 0 3