1. 程式人生 > >Python寫自動化之一種截圖方法

Python寫自動化之一種截圖方法

在進行自動化測試時,很多時候需要通過圖片對比來判斷某個功能是否正常,通常情況下,使用

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鍵。