初衷
最近研究了挺多有關(guān)于Appium的東西。也寫了一些Appium的學(xué)習(xí)筆記苦掘。
- 《Appium——驅(qū)動(dòng)和常用功能的封裝》
- 《Appium——處理混合APP中H5的操作》
- 《Appium——無(wú)安卓源碼的一些準(zhǔn)備》
- 《Appium學(xué)習(xí)之路—環(huán)境搭建》
相信很多人和我一開始一樣今阳,都會(huì)覺得學(xué)習(xí)文檔太少了堪唐,但是沒什么基礎(chǔ)的又看不懂別人寫好的代碼缕探,官方的demo比較簡(jiǎn)單等等問(wèn)題,不知道怎么走下去唆铐。
其實(shí)最大的坎還是在自己哲戚,只要開始寫,一邊寫一邊Google或链,慢慢的會(huì)發(fā)現(xiàn)很其實(shí)并不難惫恼。
Appium實(shí)戰(zhàn)我打算記錄自己寫自動(dòng)化的過(guò)程。希望對(duì)新司機(jī)有幫助澳盐。
注:整個(gè)流程是按照Page Object來(lái)寫的祈纯,直接擼代碼的請(qǐng)看《Appium——驅(qū)動(dòng)和常用功能的封裝》然后自己擼代碼
幾種設(shè)計(jì)模式
線性模式
我稱呼它為擼代碼,也就是按照業(yè)務(wù)邏輯直接hard code叼耙⊥罂基本上初學(xué)者都會(huì)這樣折騰,當(dāng)然筛婉,折騰了一段時(shí)間就會(huì)覺得很操蛋簇爆,自己都不想看自己寫的代碼。
Page Object
比較流行的設(shè)計(jì)模式爽撒,高度解耦入蛆,初學(xué)者看起來(lái)會(huì)覺得有點(diǎn)操蛋,但是了解了邏輯之后硕勿,會(huì)發(fā)現(xiàn)這樣做非常棒哨毁,維護(hù)起來(lái)簡(jiǎn)直是輕松加愉快。
通用框架
通用框架就是比較高級(jí)的做法了源武,實(shí)施起來(lái)比較麻煩扼褪,如果水平到了想幻,這種方式肯定是最好的,利用關(guān)鍵字來(lái)驅(qū)動(dòng)程序话浇,是比較高級(jí)的境界脏毯。缺點(diǎn)就是比較難。幔崖。食店。。
設(shè)計(jì)思路
整個(gè)設(shè)計(jì)思路是基于Page Object模式岖瑰,如下圖:
什么是Page Object叛买?
When you write tests against a web page, you need to refer to elements within that web page in order to click links and determine what's displayed. However, if you write tests that manipulate the HTML elements directly your tests will be brittle to changes in the UI. A page object wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements without digging around in the HTML.
原來(lái)是Web端的模式,搬到移動(dòng)端來(lái)蹋订,就是把頁(yè)面分拆成一個(gè)一個(gè)元素,如示意圖所示刻伊,我拆分為元素?cái)?shù)據(jù)露戒、元素定位、元素操作捶箱、測(cè)試步驟這么些東西智什。
有什么好處?
這種模式整個(gè)架構(gòu)看起來(lái)比直接擼代碼復(fù)雜了很多丁屎,不過(guò)當(dāng)遇到一些坑爹的問(wèn)題時(shí)荠锭,尤其開發(fā)頻繁改動(dòng)的時(shí)候,這種設(shè)計(jì)模式的優(yōu)勢(shì)就出來(lái)了晨川,比如開發(fā)改了元素的ID那些東西证九,那么我們只要修改相應(yīng)ID就行了,所有和這個(gè)元素相關(guān)的都直接關(guān)聯(lián)修改了共虑,愧怜,而直接擼代碼,涉及到的地方可能會(huì)有很多妈拌,改動(dòng)起來(lái)很麻煩拥坛。查找方法,測(cè)試步驟什么的都不用改尘分,維護(hù)起來(lái)相對(duì)輕松猜惋。
一些環(huán)境
簡(jiǎn)單列一下我的環(huán)境吧:
系統(tǒng):Mac OS X EI Capitan
Python: 2.7
Appium: 1.4.16
IDE: PyCharm
測(cè)試系統(tǒng):Android
測(cè)試對(duì)象:微證券(應(yīng)用商店可以直接下載)
我的項(xiàng)目結(jié)構(gòu):
____.DS_Store
|____config.py
|____Data
| |____data.json
|____img
| |____.DS_Store
| |____caixun
| | |____gupiao.png
| | |____gupiaoneirong.png
| | |____jijin.png
| | |____jijinneirong.png
| | |____tuijian.png
| | |____tuijianneirong.png
| | |____xinsanban.png
| | |____xinsanbanneirong.png
| | |____zhaiquan.png
| | |____zhaiquanneirong.png
| | |____黃金.png
|____Report
|____test.py
|____TestCase
| |______init__.py
| |____common.py
| |____testCaixun.py
|____View
| |______init__.py
| |______init__.pyc
| |____BaseTestCase.py
| |____BaseView.py
| |____Caixun.py
大的目錄我是這么劃分的:
- Data 用來(lái)放置一些數(shù)據(jù)
- Report 存放測(cè)試報(bào)告
- TestCase 存放測(cè)試用例
- img 存放一些截圖
- config.py 配置文件
當(dāng)然寫到后續(xù)可能會(huì)做一些調(diào)整,畢竟我才剛剛開始寫培愁。
一些忠告
- 一些很弱智的問(wèn)題就自己去Google著摔,比如Appium怎么開始啊,怎么學(xué)啊竭钝,環(huán)境怎么搭建袄孀病雹洗!
- 多用Google
- StockOverflow是個(gè)好地方
- 多寫、多寫卧波、多寫
- 人腦不是萬(wàn)能的时肿,遇到問(wèn)題解決后記錄下來(lái)才是王道