py+selenium 自動判斷頁面是否報錯並顯示在自動化測試報告【原創】


  有需求就會去研究解決的路子。

  現在需求就是,測試報告報錯信息一堆,但卻無法肉眼看出是什么問題,你只能知道定位不到元素或是超時,但你卻不知道其實進入頁面就報錯了或是提交表單就報錯了!也就是看到報錯,需要進一步去手工實際操作看看到底為啥定位不到元素或是為啥超時了。

  這就是平常比較抓頭的測試報告圖。

 

 

  最近我就想寫個方法,判斷頁面報錯,顯示在測試報告里,減少手工的檢驗,其實也很簡單。

 

# 測試進入頁面是否報錯
def httpcode(self, link):

    self.driver.switch_to.parent_frame()
    self.driver.switch_to.frame("fraLeftFrame")

    # 拼接當前訪問的url
    # href = self.driver.find_element_by_link_text(link).get_attribute('href')
    href = self.driver.find_element_by_xpath("//a[text()='%s']" % link).get_attribute('href')
    href = re.findall("(\/.*)\"\)", href)
    ipport = re.findall("(http://.*)\/", self.driver.current_url)
    url = ipport[0] + href[0]

    cookies = {"JSESSIONID": self.driver.get_cookies()[0]['value'], "jforumSSOCookieNameUser": "xxxx"}

    res = requests.get(url, cookies=cookies, stream=True)

    # 判斷是否響應200
    if res.status_code != 200:

        print("********** http請求錯誤,頁面報錯 **********\n"
              "(訪問", url, "頁面報錯", res.status_code, ")\n")
        raise urllib.error.HTTPError()
    else:
        print("**********  http請求響應200  **********")

    self.driver.switch_to.parent_frame()
    self.driver.switch_to.frame("fraRightFrame")

 

  無視方法里前后的進入frame哈,由於頁面需要登錄,所以我需要獲取當前cookie加入到request里,這個根據你自己的系統實際需求設計。

  其實主要的思路就是,訪問頁面時,用request請求對應頁面(因為無直接鏈接,所以上面的代碼是拼接出頁面的鏈接),根據響應是否為200來判斷頁面是否報錯,如果非200,那就拋出異常

 

  而調用時,則是放在顯示等待前面,這樣頁面報錯,就不用去跑30秒等待着元素了,報錯反而更快的退出進入下一條用例。

 

 

  上面是頁面訪問報錯的問題處理,而下面我又寫了個,提交表單報錯的處理,更簡單。

  僅提供思路,不一定適用所有系統。

  因為目標系統提交報錯跳轉的報錯頁面,都是同個頁面,那么就可以通過定位報錯頁面里面的某個元素來判斷,如果發現元素存在則拋出異常,不存在則繼續。

 

 

   雖說上面兩種方法,不能將所有報錯可能都判斷出來,但也至少判斷了7成,大大的減少人工檢驗。

 

現在的報告是這樣:

 

 

 

如有錯誤,請及時指正,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM