前一段時(shí)間了解到有那么一個(gè)自動(dòng)化測(cè)試框架,名叫ATX,是由網(wǎng)易大佬@codeskyblue的團(tuán)隊(duì)研發(fā)的。
經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)长踊,在此我總結(jié)一下ATX的優(yōu)缺點(diǎn)。
優(yōu)點(diǎn):
1.環(huán)境搭建簡(jiǎn)單
2.運(yùn)行速度比Appium略快
3.易上手萍倡,如果學(xué)習(xí)過(guò)其它自動(dòng)化框架就能在很短的時(shí)間內(nèi)學(xué)會(huì)ATX身弊,即便是第一次學(xué)習(xí)這類(lèi)框架也會(huì)感受到世界是如此美好
缺點(diǎn):
1.暫時(shí)還沒(méi)感受到明顯的缺點(diǎn)
歡迎加入ATX qq群499563266
本文不對(duì)ATX安裝做贅述,如果需要安裝教程請(qǐng)另行搜索列敲,本文更專(zhuān)注于ATX在工作中的實(shí)際應(yīng)用阱佛。
事前準(zhǔn)備:
mac一臺(tái)(由于ios系統(tǒng)的封閉性,所以想做ios自動(dòng)化必備mac電腦)
ios手機(jī)一臺(tái)
python3+環(huán)境
ATX環(huán)境
App選擇:
由于是網(wǎng)易的框架戴而,所以在這里我選擇網(wǎng)易的app“網(wǎng)易云課堂”做演示(當(dāng)然其它公司的app也是可以用的)瘫絮,不要問(wèn)我為什么不選擇網(wǎng)易云音樂(lè)。
本系列文章預(yù)計(jì)分成三篇
第一篇:登錄網(wǎng)易云課堂
第二篇:更改學(xué)習(xí)興趣填硕,搜索課程并標(biāo)記為想學(xué)麦萤,觀看課程
第三篇:套用單元測(cè)試框架鹿鳖,生成測(cè)試報(bào)告
ok,閑扯了這么多壮莹,現(xiàn)在正式開(kāi)始第一篇翅帜,登錄網(wǎng)易云課堂,首先在你的手機(jī)上安裝好app命满,其次給它打個(gè)評(píng)價(jià)(以防跑腳本的時(shí)候冷不丁跳出來(lái)求好評(píng)涝滴,那就涼涼了),再然后確定wda的代理已經(jīng)運(yùn)行在你的手機(jī)上胶台,最后把手機(jī)端口映射到電腦上歼疮。(以上這些是安裝ATX會(huì)涉及的內(nèi)容,所以本文一句話帶過(guò)了)
本篇內(nèi)容主要分為兩部分
1.打開(kāi)app
2.登錄帳號(hào)
1.打開(kāi)app
我們先來(lái)看一個(gè)demo诈唬,看一下打開(kāi)一個(gè)app最簡(jiǎn)單的方法
import wda
client= wda.Client('http://localhost:8100')
client.healthcheck()
session= client.session('包名')
代碼非常簡(jiǎn)單韩脏,僅需短短四行就可以實(shí)現(xiàn)打開(kāi)app,每一個(gè)app都有包名铸磅,那么我們?cè)撛趺传@得包名呢赡矢?
在命令行輸入命令:ideviceinstaller -l
可以獲得當(dāng)前手機(jī)上所有已安裝的app的包名,是不是很簡(jiǎn)單
我們可以快速得到網(wǎng)易云課堂的包名為:com.netease.study901iphone
然后把上面的demo的session= client.session('包名')替換為
session= client.session('com.netease.study901iphone')就行了
運(yùn)行文件阅仔,看看是不是成功打開(kāi)了app吹散,由于后面沒(méi)有加延遲,所以打開(kāi)后會(huì)立馬關(guān)閉八酒,不要感到詫異空民,這是正常的!P呙浴界轩!
2.登錄帳號(hào)
接著我們要進(jìn)入登錄界面(目前在首頁(yè)),那就是先點(diǎn)擊"賬號(hào)"頁(yè)面闭树,然后點(diǎn)擊"登錄/注冊(cè)"(或者你想點(diǎn)擊"我的學(xué)習(xí)"耸棒,然后點(diǎn)擊"登錄"荒澡,也是一樣的)报辱,本來(lái)打算把進(jìn)入app的廣告頁(yè)面(就是右上角是"跳過(guò)"按鈕的那個(gè)頁(yè)面)直接跳過(guò)的,不過(guò)廣告頁(yè)面顯示挺短的单山,一兩秒就過(guò)了碍现,就不專(zhuān)門(mén)做處理了,如果你有興趣的話可以寫(xiě)一下米奸。
根據(jù)wda自帶的inspector我們可以獲取到元素的屬性昼接,如圖
我們要做的就是點(diǎn)擊"帳號(hào)"一下,然后點(diǎn)擊"登錄/注冊(cè)"一下
我們可以看到"帳號(hào)"這個(gè)元素的name為帳號(hào)悴晰,同理可得"登錄/注冊(cè)"元素的name為元素/注冊(cè)慢睡,但是在這里提醒一下大家逐工,不要想當(dāng)然以為name就是元素的名字,盡量用inspector確認(rèn)一下元素的屬性再使用
直接上代碼
session(name='帳號(hào)').tap()
session(name='登錄/注冊(cè)').tap()
粘貼到前面已經(jīng)成功打開(kāi)app的代碼后面
運(yùn)行一下試試~
不出意外報(bào)錯(cuò)了漂辐,沒(méi)有發(fā)現(xiàn)"登錄/注冊(cè)"這一元素泪喊,再看一下app當(dāng)前所在的頁(yè)面,你會(huì)發(fā)現(xiàn)還停留在首頁(yè)髓涯,那可以推斷出帳號(hào)這個(gè)點(diǎn)擊操作沒(méi)有成功執(zhí)行袒啼,為什么呢?
忽然想到纬纪,打開(kāi)app后的廣告頁(yè)蚓再,會(huì)不會(huì)內(nèi)頁(yè)已經(jīng)加載完成(但被廣告頁(yè)遮擋),帳號(hào)的點(diǎn)擊操作實(shí)際點(diǎn)擊到了廣告頁(yè)面上了呢包各?
有一個(gè)想法了摘仅,那怎么讓點(diǎn)擊操作不落在廣告頁(yè)面上,visible屬性了解一下
session(name='帳號(hào)',visible=True).tap()
這句比上面多了visible=True髓棋,實(shí)際作用就是當(dāng)name為帳號(hào)的元素可見(jiàn)時(shí)再點(diǎn)擊
ok实檀,那我們?cè)僭囋嚒?/p>
是不是成功進(jìn)入了登錄界面!
然后我們選擇手機(jī)號(hào)登錄的方法按声,然后還要輸入帳號(hào)膳犹,密碼,最后點(diǎn)擊登錄
理想的話應(yīng)該就是四個(gè)操作签则,如下
session(name='手機(jī)號(hào)登錄').tap()
# 輸入帳號(hào)
session(className='TextField').set_text('你的帳號(hào)')
# 輸入密碼
session(className='SecureTextField').set_text('你的密碼')
# session(value='請(qǐng)輸入手機(jī)號(hào)').set_text('你的帳號(hào)')
# session(value='請(qǐng)輸入6-16密碼').set_text('你的密碼')
# 點(diǎn)擊登錄
session(name='登 錄').tap()
由于帳號(hào)輸入框和密碼輸入框沒(méi)有name须床,所以這里我沒(méi)有采用name的定位方式,而是className的定位方式渐裂,另外還多寫(xiě)了一種用value定位的方式(已注釋的兩行)豺旬,有興趣的同學(xué)可以試試。
我們把上面這段代碼拷到之前的代碼后面柒凉,并將你的帳號(hào)和密碼填充上去族阅,運(yùn)行一下,
艸膝捞,又報(bào)錯(cuò)了坦刀!
"Keyboard is not present"
鍵盤(pán)不存在,其實(shí)就是鍵盤(pán)沒(méi)有調(diào)出來(lái)
真不是我故意搞你蔬咬,我一開(kāi)始也是這么想的鲤遥,但是不知道為啥,鍵盤(pán)沒(méi)有調(diào)出來(lái)(這里還希望知道的大佬們能說(shuō)一下原因)
既然不存在林艘,那就把它搞出來(lái)盖奈,set_text方法不行,那我就用tap方法狐援,我點(diǎn)擊帳號(hào)輸入框钢坦,總會(huì)調(diào)出鍵盤(pán)的究孕,所以在"手機(jī)號(hào)登錄"那一句后面再加一句
session(className='TextField').tap()
我們?cè)僭囍\(yùn)行一下,這次百分之一百成功了爹凹!
我們成功登錄到了帳號(hào)頁(yè)面有木有~
由于本人沒(méi)用git蚊俺,所以完整代碼保存到百度云上了,感興趣的同學(xué)請(qǐng)到下面的鏈接下載逛万,會(huì)有更詳細(xì)的注釋泳猬。
鏈接: https://pan.baidu.com/s/11F_Ab6t7SnOzXCo4JbHlzQ 密碼: 2uu5
那我們下一篇再見(jiàn)吧,bye~
感謝閱讀宇植,歡迎轉(zhuǎn)載得封。
如有錯(cuò)誤請(qǐng)及時(shí)指出,謝謝指郁!
如有問(wèn)題請(qǐng)留言忙上,我懂的必然會(huì)回復(fù)!
共勉闲坎。