<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] 前言 在執行用例過程中由于是無人值守的,用例運行報錯的時候,我們希望能對當前屏幕截圖,留下證據。 在寫用例的時候,最后一步是斷言,可以把截圖的動作放在斷言這里,那么如何在斷言失敗后截圖呢? ## **一、截圖方法** ``` 1.get_screenshot_as_file(self, filename) --這個方法是獲取當前window的截圖,出現IOError時候返回False,截圖成功返回True。 filename參數是保存文件的路徑。 Usage: driver.get_screenshot_as_file('/Screenshots/foo.png') 2.get_screenshot_as_base64(self) --這個方法也是獲取屏幕截圖,保存的是base64的編碼格式,在HTML界面輸出截圖的時候,會用到。 比如,想把截圖放到html測試報告里。 Usage: driver.get_screenshot_as_base64() 3.get_screenshot_as_png(self) --這個是獲取屏幕截圖,保存的是二進制數據,很少用到. Usage: driver.get_screenshot_as_png() ``` <br /> ## **二、異常后截圖** 1. 為了能拋異常,把定位登錄按鈕的id換了個錯的id。 2. 給圖片命名時候加個時間戳,避免同一個文件名稱被覆蓋掉。 3. 文件路徑,這里直接寫的文件名稱,就是跟當前的腳本同一個路徑。如果圖片輸出到其它文件路徑,需要些文件的絕對路徑了。 4. 截圖的結果,如果沒截到圖返回False,截圖成功會返回True。 ``` from selenium import webdriver import time url_login = "https://account.cnblogs.com/signin" driver = webdriver.Chrome() driver.get(url_login) try: driver.find_element_by_id("mat-input-0").send_keys("梔楠") driver.find_element_by_id("mat-input-1").send_keys("xxx") # 登錄id是錯的,定位會拋異常 driver.find_element_by_id("signin").click() # driver.find_elements_by_css_selector(".mat-button-wrapper:nth-child(0)").click() except Exception as msg: print("異常原因 %s" %msg) # 圖片名稱可以加個時間戳 nowTime = time.strftime("%Y%m%d.%H.%M.%S") t = driver.get_screenshot_as_file("%s.jpg" % nowTime) print("截圖結果: %s" %t) ``` <br /> ## **三、selenium實例** 1. 在unittest框架里寫用例的時候,我們希望在斷言失敗的時候,對當前屏幕截圖。 2. 如果加try...except捕獲異常后結果,此時所有的測試用例都是通過的了,會影響測試結果。解決辦法其實很簡單,再把異常拋出來就行了。 3. 參考代碼: ``` from selenium import webdriver import time,unittest from selenium.webdriver.support import expected_conditions as EC class Login(unittest.TestCase): def setUp(self): url_login = "https://account.cnblogs.com/signin" self.driver = webdriver.Chrome() self.driver.get(url_login) def test_01(self): '''前面輸入賬號密碼,讓正確運行到assert這一步,斷言故意設置為False不成功''' try: self.driver.find_element_by_id("mat-input-0").send_keys("梔楠") self.driver.find_element_by_id("mat-input-1").send_keys("xxx") # 登錄id是錯的,定位會拋異常 self.driver.find_element_by_id("signin").click() # 判斷登錄成功頁面是否有賬號:"梔楠" time.sleep(3) locator = ("id", "lnk_current_user") result = EC.text_to_be_present_in_element(locator, "梔楠")(self.driver) except Exception as msg: print("異常原因 %s" %msg) # 圖片名稱可以加個時間戳 nowTime = time.strftime("%Y%m%d.%H.%M.%S") self.get_screenshot_as_file("%s.jpg" % nowTime) raise def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main() ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看