selenium--瀏覽器窗口截圖


前戲

在進行web自動化的時候,只有一個報錯信息是不行的,往往需要截圖來幫助我們來快速的定位問題,試想一下,我們在一個彈框里添加一些數據,點擊保存后,然后在操作元素,這時selenium報錯,說找不到這個元素,如果只看錯誤信息,那我們可能會以為是沒找到這個元素,而前面的添加數據保存是成功的。那有沒有這樣的可能,當我們點擊保存的時候,一個必填項的輸入框由於元素的改變,而沒有輸入,這時候點擊保存會提示有必填項沒有填,所以問題是出在點擊保存之前,而不是在點擊保存之后。如果這時能保存到圖,我們就能很方便的定位到問題

實戰

# 打開百度首頁截圖,輸入 python 搜索后截圖
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.get_screenshot_as_file(r'E:\1234.png')  # 路徑不存在不報錯,但保存不了

sleep(2)
driver.find_element_by_css_selector('#kw').send_keys('python')
driver.find_element_by_css_selector('#su').click()
sleep(10)
driver.get_screenshot_as_file(r'E:\2345.png')
driver.quit()

注意:圖片的后綴必須是png,如果不是png,則會報一個警告,在源碼中也有說明

    def get_screenshot_as_file(self, filename):
        """
        Saves a screenshot of the current window to a PNG image file. Returns
           False if there is any IOError, else returns True. Use full paths in
           your filename.

        :Args:
         - filename: The full path you wish to save your screenshot to. This
           should end with a `.png` extension.

        :Usage:
            driver.get_screenshot_as_file('/Screenshots/foo.png')
        """
        if not filename.lower().endswith('.png'):
            warnings.warn("name used for saved screenshot does not match file "
                          "type. It should end with a `.png` extension", UserWarning)
        png = self.get_screenshot_as_png()
        try:
            with open(filename, 'wb') as f:
                f.write(png)
        except IOError:
            return False
        finally:
            del png
        return True
if not filename.lower().endswith('.png') 如果不是以.png結尾,則會拋出警告

 


免責聲明!

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



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