qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Selenium執(zhí)行測試腳本穩(wěn)定性的一些經(jīng)驗分享交流

            關(guān)于工作中使用Selenium執(zhí)行測試腳本穩(wěn)定性的一些經(jīng)驗分享

            公司的自動化WEB測試框架IATA已上線運(yùn)行了一段時間,期間發(fā)現(xiàn)一些腳本穩(wěn)定性的問題,與大家分享一下。

            CASE執(zhí)行游覽器:ie firefox chrome

            穩(wěn)定性問題

             一、在持續(xù)執(zhí)行WEB自動化的過程中,如需持續(xù)執(zhí)行腳本,比如持續(xù)跑腳本24小時,48小時,甚至一周時間。測試CASE會間歇性發(fā)生持續(xù)加載頁面無響 應(yīng)的情況。此現(xiàn)象發(fā)生后,測試CASE就會因為持續(xù)加載頁面這個動作而無響應(yīng)。后續(xù)CASE也不會執(zhí)行直到當(dāng)前人為手工解決當(dāng)前的測試進(jìn)程。

            現(xiàn)象:頁面持續(xù)加載 無反應(yīng),測試CASE 中斷無法繼續(xù)執(zhí)行。

            解決方案:

            1)如上圖

            建議使用線程的方式來監(jiān)控測試進(jìn)程的WEB加載執(zhí)行狀態(tài)。若超時后則從線程中FAIL當(dāng)前CASE,使腳本可以持續(xù)運(yùn)行。

            方法

             在頁面會發(fā)生跳轉(zhuǎn)的時候 啟一個 Thread來監(jiān)控進(jìn)程的狀況,在Thread的run方法定義一個 計時器,如果計時器超時,則可以刷新頁面,計時器清零,若此時刷新頁面后,計時器再次超時,則線程會關(guān)閉當(dāng)前進(jìn)程的游覽器,F(xiàn)AIL掉當(dāng)前的 CASE,TestNG會自動啟動下一個測試CASE。并且在全部測試CASE執(zhí)行完畢后,TestNG會記載執(zhí)行失敗的CASE,然后從新執(zhí)行 CASE。

            部分Thread 代碼

            Refresh  code:

            干掉線程的 code

            這里是關(guān)掉chrome的進(jìn)程 來達(dá)到關(guān)閉游覽器的目的。

            通過上述步驟則可以控制游覽器加載的過程從而解決CASE中加載頁面無響應(yīng)導(dǎo)致的CASE暫停問題。

           我們發(fā)現(xiàn)使用WebDriver的過程中,TESTCASE在執(zhí)行時,并非只有GET(Url)的時候會發(fā)生測試CASE卡主的問題,以下是對會發(fā)生此情況的函數(shù)的補(bǔ)充

            driver.findelement(String locator) //查找頁面元素
            driver.refush(); //刷新頁面
            driver.getpagesource(); //獲取頁面html文本輸出
            element.click();//點(diǎn)擊頁面元素

            見過檢查發(fā)現(xiàn)上述函數(shù)在加載頁面或查找頁面元素的時候,若發(fā)生由于網(wǎng)絡(luò)原因或者頁面模塊加載出現(xiàn)問題時,頁面都會在這個過程中卡住,直接的后果就是這個CASE持續(xù)執(zhí)行幾小時沒結(jié)果。在 穩(wěn)定性1文中我們已經(jīng)介紹過處理的方法,在這里只針對某一個函數(shù)去放出部分代碼,

            具體思路為

            以driver.refush();為例

            線程實(shí)現(xiàn)的代碼

            核心調(diào)用的刷新頁面的函數(shù)

            refreshThread();實(shí)現(xiàn)

            調(diào)用流程

            主CASE執(zhí)行刷新函數(shù)?刷新函數(shù)調(diào)用子線程?子線程執(zhí)行刷新?執(zhí)行完畢告訴主線程OK。

            若主線程判斷子線程超時既頁面卡主的情況,則主線程會關(guān)閉子線程執(zhí)行相應(yīng)的FAIL操作。

            歡迎交流~

          posted on 2012-12-24 15:28 順其自然EVO 閱讀(1925) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學(xué)習(xí)

          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 满洲里市| 三门峡市| 轮台县| 永宁县| 盘山县| 神木县| 崇义县| 比如县| 丽水市| 云梦县| 那曲县| 阿勒泰市| 洞口县| 丹巴县| 图木舒克市| 白玉县| 教育| 奇台县| 阿图什市| 比如县| 新野县| 建阳市| 滦南县| 芮城县| 渭源县| 同心县| 孝昌县| 莆田市| 西贡区| 泸溪县| 巴彦淖尔市| 鹿泉市| 鄂州市| 饶河县| 弥勒县| 和静县| 玛多县| 辽阳市| 德保县| 金秀| 积石山|