Python寫自動化之一種截圖方法
阿新 • • 發佈:2019-01-05
在進行自動化測試時,很多時候需要通過圖片對比來判斷某個功能是否正常,通常情況下,使用
Python 的第三方包 Image 可以 實現擷取圖片的功能。然而,有時候有些圖片是flash或者其他,
使用 Image 擷取到的可能是一片空白,舉個輸入法的例子來說,輸入法的狀態列,以及輸入法
的一些視窗,在桌面上可以看到,截圖卻截不到。
針對這種情況,一種方法是首先通過呼叫windows 的系統功能,按鍵 PrintScreen 進行整個螢幕
的截圖,之後在對所獲得的圖片進行截圖,這樣就可以得到圖片。
附上程式碼:
#函式功能:擷取某一矩形的螢幕(可以擷取flash面板,網頁的flash)#引數:rect--矩形大小,filename--儲存檔名,fmt--儲存格式,可以為空#返回值:成功則真,否則FalsedefRectCapturePlus(rect, filename, fmt =None): win32api.keybd_event(win32con.VK_SNAPSHOT,0,0,0) sleep(1) win32api.keybd_event(win32con.VK_SNAPSHOT,0, win32con.KEYEVENTF_KEYUP,0) sleep(1)try: im =ImageGrab.grabclipboard() im = im.crop(rect) im.save(filename, fmt)except:returnFalsereturnTrue
其中,win32con.VK_SNAPSHOT 代表的是 PrintScreen鍵。