關(guān)于工作中使用Selenium執(zhí)行測(cè)試腳本穩(wěn)定性的一些經(jīng)驗(yàn)分享
公司的自動(dòng)化WEB測(cè)試框架IATA已上線運(yùn)行了一段時(shí)間,期間發(fā)現(xiàn)一些腳本穩(wěn)定性的問(wèn)題,與大家分享一下。
CASE執(zhí)行游覽器:ie firefox chrome
穩(wěn)定性問(wèn)題
一、在持續(xù)執(zhí)行WEB自動(dòng)化的過(guò)程中,如需持續(xù)執(zhí)行腳本,比如持續(xù)跑腳本24小時(shí),48小時(shí),甚至一周時(shí)間。測(cè)試CASE會(huì)間歇性發(fā)生持續(xù)加載頁(yè)面無(wú)響應(yīng)的情況。此現(xiàn)象發(fā)生后,測(cè)試CASE會(huì)因?yàn)槌掷m(xù)加載頁(yè)面這個(gè)動(dòng)作而無(wú)響應(yīng)。后續(xù)CASE也不會(huì)執(zhí)行直到當(dāng)前人為手工解決當(dāng)前的測(cè)試進(jìn)程。
現(xiàn)象:頁(yè)面持續(xù)加載 無(wú)反應(yīng),測(cè)試CASE 中斷無(wú)法繼續(xù)執(zhí)行。
解決方案:
1)如上圖
建議使用線程的方式來(lái)監(jiān)控測(cè)試進(jìn)程的WEB加載執(zhí)行狀態(tài)。若超時(shí)后則從線程中FAIL當(dāng)前CASE,使腳本可以持續(xù)運(yùn)行。
方法
在頁(yè)面會(huì)發(fā)生跳轉(zhuǎn)的時(shí)候 啟一個(gè) Thread來(lái)監(jiān)控進(jìn)程的狀況,在Thread的run方法定義一個(gè) 計(jì)時(shí)器,如果計(jì)時(shí)器超時(shí),則可以刷新頁(yè)面,計(jì)時(shí)器清零,若此時(shí)刷新頁(yè)面后,計(jì)時(shí)器再次超時(shí),則線程會(huì)關(guān)閉當(dāng)前進(jìn)程的游覽器,F(xiàn)AIL掉當(dāng)前的CASE,TestNG會(huì)自動(dòng)啟動(dòng)下一個(gè)測(cè)試CASE。并且在全部測(cè)試CASE執(zhí)行完畢后,TestNG會(huì)記載執(zhí)行失敗的CASE,然后從新執(zhí)行CASE。
部分Thread 代碼
Refresh code:
干掉線程的 code
這里是關(guān)掉chrome的進(jìn)程 來(lái)達(dá)到關(guān)閉游覽器的目的。
通過(guò)上述步驟則可以控制游覽器加載的過(guò)程從而解決CASE中加載頁(yè)面無(wú)響應(yīng)導(dǎo)致的CASE暫停問(wèn)題。