在上一篇中我講解了怎么打開網(wǎng)易云課堂以及怎么登錄,在本篇中將更深入的往實(shí)戰(zhàn)方向靠近,將會講解以下功能測試用例的腳本如何編寫。
1.更改學(xué)習(xí)興趣
2.搜索課程并標(biāo)記為想學(xué)
3.觀看課程
1.更改學(xué)習(xí)興趣
相信有很多小伙伴注意到我們在初次使用網(wǎng)易云課堂的時候,它會讓我們選擇學(xué)習(xí)興趣(并根據(jù)學(xué)習(xí)興趣為我們推送我們感興趣的內(nèi)容),如果我們在初次使用時沒有選擇也不要緊,我們在“帳號”中再次進(jìn)入選擇
在這里,能看到我之前就已經(jīng)選好了一些興趣,接下來我打算選擇“辦公軟件”,然后去驗(yàn)證是否選擇成功。
需要做的操作:進(jìn)入“帳號”——進(jìn)入“學(xué)習(xí)興趣”——選擇“辦公軟件”——進(jìn)入“首頁”——驗(yàn)證是否成功選擇
# 進(jìn)入帳號
session(name='帳號',visible=True).tap()
# 進(jìn)入學(xué)習(xí)興趣
session(name='學(xué)習(xí)興趣').tap()
# 選擇辦公軟件
session(name='辦公軟件').tap()
session(name='選好了').tap()
# 進(jìn)入首頁
session(name='首頁').tap()
# 下拉刷新頁面,使新選擇的學(xué)習(xí)興趣生效
session.swipe(200,200,200,400)
try:
? ? # 等待3秒name為辦公軟件的元素出現(xiàn)
????session(name='辦公軟件').wait(3)
????print('yes')
except:
????print('no')
以上代碼是在已經(jīng)登錄后執(zhí)行的,在未選擇辦公軟件的情況下進(jìn)行選擇,并去首頁檢查是否選擇成功。
用到了swipe方法和wait方法,這里稍微講一下
swipe方法參數(shù)是x1,y1,x2,y2,即從(x1,y1)滑動到(x2,y2),
我們比較常用的應(yīng)該上滑,我們可以直接使用swipe_up方法,默認(rèn)從屏幕最下端中心滑動到最上端中心。
接下來wait方法也是特別重要的,用于檢測元素是否存在,與exists方法有點(diǎn)像,不過wait方法有點(diǎn)類似于selenium中的顯性等待,可以為等待某個元素出現(xiàn)設(shè)置一個最大時間,非常實(shí)用,而exists方法相對局限一些,它是直接檢查當(dāng)前時間該元素是否存在。
2.搜索課程并標(biāo)記為想學(xué)
需要做的操作:進(jìn)入“分類”——選擇“編程語言”——選擇“Python”——進(jìn)入展示的第一個課程——點(diǎn)擊“想學(xué)”——回退至首頁——進(jìn)入“我的學(xué)習(xí)”——點(diǎn)擊“我的收藏”——檢查是否展示“已收藏到“想學(xué)的課程””的消息
session(name='分類').tap()
session(name='編程開發(fā)').tap()
session(name='Python').tap()
session(name='暢銷').wait()
# 點(diǎn)擊第一個課程的名字
session(xpath='//*[@name="暢銷"]/../../following-sibling::XCUIElementTypeCell[1]/XCUIElementTypeStaticText[1]').tap()
session(name='想學(xué)').tap()
session('name LIKE "*想學(xué)的課程*"').wait()
這一節(jié)比較特別的是xpath的定位方法,一般xpath定位是寫成這樣的“//*[@name='xxx']”,但我發(fā)現(xiàn)課程名字(或評分或xx人學(xué)過或價格)在元素樹中沒有什么特殊的屬性,比較難定位,只能通過相對位置來定位,看下圖的元素樹
我們能看到有兩個Cell,能比較清楚的看出來每個Cell代表一個課程,如何能準(zhǔn)確定位到Cell再進(jìn)一步定位到課程名就成了問題,或許有很多人想到直接通過className來定位Cell,這確實(shí)是一個方法,但不穩(wěn)定,因?yàn)樵谒斑€有很多Cell,如果頁面有丁點(diǎn)變化就不準(zhǔn)了。在這里我先定位到了暢銷這個元素,再定位到它的父節(jié)點(diǎn)的父節(jié)點(diǎn)(/..代表父節(jié)點(diǎn)),再定位它的弟弟節(jié)點(diǎn)(following-sibling::完整class名[序號]),最后找到它的子節(jié)點(diǎn)。具體xpath用法還需要你去再學(xué)習(xí)一下,在此不再繼續(xù)展開。
3.觀看課程
需要做的操作:進(jìn)入“首頁”——搜索免費(fèi)的“課程”——選擇課程進(jìn)入——點(diǎn)擊“加入學(xué)習(xí)”
session(className='StaticText').tap()
session(className='StaticText').set_text('Python A~B~C~')
session(name='Search').tap()
session(name='Python A~B~C~').tap()
try:
? session(name='加入學(xué)習(xí)').tap(timeout=3)
session(name='開始學(xué)習(xí)').tap()
except:
? session(name='進(jìn)入學(xué)習(xí)').tap()
time.sleep(10)
# 找到視頻中心點(diǎn)點(diǎn)擊
rect= session(xpath='//*[@name="lesson cancel"]/../following-sibling::XCUIElementTypeOther[1]').bounds
session.tap(rect.x+ rect.width/ 2, rect.y+ rect.height/ 2)
# 全屏播放
session(name='control fullScreenIcon').tap()
# 第一次進(jìn)入時會有操作指示,需要點(diǎn)擊一下屏幕
try:
? # 如果有操作指示,則視頻暫停,會有播放按鍵,此處檢查是否有播放按鍵
? session(name='control playButton').wait(3)
session.tap(100,100)
except:
? pass
finally:
? time.sleep(5)
session.tap(100,100)
session(name='control backIcon').tap()
在這里用到了一個點(diǎn)擊元素中心的特殊方法,首先通過bounds得到元素的x,y坐標(biāo),width,height寬和長,通過計算即可得到元素的中心點(diǎn)坐標(biāo),其它沒啥特別的,前面都講過了。
本篇的demo鏈接
鏈接:https://pan.baidu.com/s/1hz2fnHx18Bmkq53KlMv91w 密碼:wzto
PS:請注意不要直接執(zhí)行,內(nèi)有三段代碼對應(yīng)本文的三部分,需要運(yùn)行哪部分把另外兩部分注釋一下。
本篇如果有地方?jīng)]看懂,歡迎在下面留言。
下一篇將會把前面實(shí)現(xiàn)的所有case寫在測試框架里,并最后輸出一個測試報告,敬請期待。
那我們下一篇再見吧,bye~
感謝閱讀,歡迎轉(zhuǎn)載。
如有錯誤請及時指出,謝謝!
如有問題請留言,我懂的必然會回復(fù)!
共勉。