不管是在手動測試仍是自動化測試中場景復現永遠是一個很重要的事情,有時候一些問題可能很難復現,這個都須要測試人員對bug有很高的敏感度,在通常的狀況下有一個很好的測試習慣也很重要,發現bug立刻截圖,不要管那麼多。下面咱們看一下自動化測試截圖的一些方法:python
一、save_screenshot(). 這個方法的用戶最直接driver.save_screenshot('test.png'),他直接是獲取當前屏幕的截圖,而後進行保存,可能會有人有疑問,這個不能指定目錄嗎?固然能夠,只是你須要使用另一個截圖方法,以下函數
二、get_screenshot_as_file(filename) 用法和上面的有一些差異,這個須要指定文件夾driver.get_screenshot_as_file('png/test.png')。測試
截圖方法經常使用的是這兩個,其餘的使用不多,這裏不作講解,若是有興趣的能夠去了解一下一個是以二進制,一個是以base64的形式獲取。設計
可能看到這裏的人會以爲不懂,爲何咱們須要用時間戳來命名,其實這個並非咱們的最終目的,這裏是在給你們傳遞一個思想,你想一想在自動化測試中你每一個方法都有可能錯誤,並且每次運行都是在不一樣的地方出錯,那麼你這個命名若是按照上面的寫死,那麼永遠只有一張圖片,其餘的圖片找不到了,這個不符合咱們設計時的思考,因此咱們須要用不一樣的方式去,顯然時間戳是一個不錯的選擇,只要出錯,咱們就截圖,並且還能保證每張圖的名字不同,是否是感受很nb,哈哈,開玩笑。blog
既然是以時間戳來進行命名,那麼首先咱們須要有一個獲取時間戳的方法,要把它封裝好,由於調用這個的地方會不少,因此要進行封裝。圖片
import time def getTime(self): tamp = int(time.time()) return tamp
上面的方法即是咱們封裝的獲取時間戳的方法,我這裏使用了一個返回函數,每次當咱們調用的時候咱們就可以獲取到當前的時間戳。接下來看一下在實際中咱們如何將時間戳使用到截圖方法中:get
import time #獲取時間戳,並看成圖片名字 def getTime(self): tamp = int(time.time()) filename = '../jpg/ %s.png' %tamp self.driver.get_screenshot_as_file(filename)
看見上面的代碼是否是很簡單啊,可是不知道大家思考過一個問題沒,是否是怎麼看怎麼以爲彆扭啊?接着往下看。自動化
上面的代碼愈來愈彆扭,哈哈,我也是那麼以爲的,下面看一下截圖功能在實際中的封裝,其實和上面差很少,只是須要養成一個習慣,儘量的將同一類功能封裝到一個方法中,so,以下:base64
import time #截圖 def getScreenShot(self): time = self.getTime() filename = '../jpg/ %s.png' %time self.driver.get_screenshot_as_file(filename) #獲取時間戳 def getTime(self): tamp = int(time.time()) return tamp
看到這個是否是稍微好一點點呢?其實這個呢只能算是入門的,那麼在實際項目中咱們究竟是怎麼進行的呢?你們下去思考一下。入門
我看着上面的代碼模糊,總感受這個driver哪裏來的呢?是否是又忘記了呢?還記得咱們return driver了麼?
提示:在實際項目中咱們的截圖封裝通常會和咱們當前的case有關係,基本是按照case執行的來進行命名,那樣在圖片頁面就可以一目瞭然的指導這個圖片是哪一個地方出錯的。去動手嘗試一下吧。