前言
由于是首次接觸自動化測試命迈,在學(xué)習(xí)和使用的過程中,難免會遇到各種各樣的問題火的,所以這篇文章是總結(jié)踩到的各種坑壶愤,保證后面再次遇到時可以快速解決~
一、索引越界error
上圖就是索引越界報的錯馏鹤,從error log中可以看到公你,報錯的這行腳本。假瞬。emmm陕靠,非常長!M衍浴剪芥!都是小程序沒有ID的錯!G傩怼税肪!
這行腳本是通過錄制得到的,可是在運(yùn)行時卻報錯,經(jīng)過查詢益兄,應(yīng)該是webkit引擎的bug锻梳,此處不再深究。
言歸正傳净捅,這行腳本既然報了indexError疑枯,證明某個索引超出了越界,那么就來找出哪里錯誤蛔六。眾所周知荆永,在編程中開始不是1,而是0国章,那么就能排除該行中索引為0的元素
排除了0之后具钥,還有三個索引,分別是1液兽、6骂删、1,那么一個一個來試四啰,從第一個
("android.webkit.WebView")[1]
開始桃漾,將1改為0后運(yùn)行,成功了拟逮!那么證明是該元素越界了撬统。
在后面的腳本錄制中,也會遇到同樣的問題敦迄,同樣是
("android.webkit.WebView")[1]
越界恋追,所以后續(xù)著重關(guān)注該元素即可
二、定位的元素文字有誤
在訂單詳情頁中罚屋,定位“立即支付”苦囱,錄制的腳本如下:
從腳本代碼來看,這明顯是無法運(yùn)行的脾猛,該怎么辦呢撕彤?
此處可以用正則表達(dá)式來解決,從圖上可看出猛拴,“立即支付”前后都有回車符羹铅,所以可以改為
poco(text="^\s*立即支付\s*$").click()
(正則表達(dá)式教程可以看這篇文章),嘗試運(yùn)行一下此處要說明一下愉昆,text是精準(zhǔn)定位职员,即元素的文字是什么就是什么,哪怕差一個字符跛溉,都會報錯
所以這里要把text改為textMatches焊切,即poco(textMatches="^\s*立即支付\s*$").click()
扮授,再次運(yùn)行
三、同一頁面有2個以上相同元素或控件的處理
在同一個頁面中专肪,有2個以上相同的元素或控件刹勃,可以用"索引"來解決該問題。
在該頁面中嚎尤,“+”和“-”各自有兩個元素荔仁,那么怎么定位第一個或者第二個呢?此處可以用索引來解決诺苹。
定位第一個的話咕晋,可以編寫為
poco(text="-")[0].click()
,poco(text="-")[0].click()
雹拄,即不設(shè)置索引收奔,或者索引設(shè)置為[0]的話,都是定位第一個“-”滓玖。想定位第二個的話坪哄,可以把索引設(shè)置為[1],即
poco(text="-")[1].click()