Python的優(yōu)雅、簡(jiǎn)潔與強(qiáng)大深深地吸引著我們,它海量的工具包為我們的工作提供了強(qiáng)有力的支持。在自動(dòng)化工作中,Python更是一把利器,數(shù)十行代碼就能干凈利落地完成很多繁瑣重復(fù)的工作。本文在這里將介紹Python中四種常用的自動(dòng)化工具包。
Pywin32
Pywin32是一個(gè)Python庫(kù),為python提供訪問(wèn)Windows API的擴(kuò)展,提供了齊全的Windows常量、接口、線程以及COM機(jī)制等等。這個(gè)庫(kù)里面最重要的三個(gè)模塊win32api、win32gui和win32con。
查找句柄:窗體是指窗口到文本框的所有控件,每個(gè)窗體都有獨(dú)立的句柄。要操作任意一個(gè)窗體,都需要找到這個(gè)窗體的句柄。我們可以用win32gui模塊中的FindWindow函數(shù)和FindWindowEx函數(shù)(子窗體函數(shù))來(lái)得到指定窗體的句柄。(使用Spy++或Inspect可以很方便地查看目標(biāo)窗口的窗口名、類(lèi)名和句柄)
菜單操作:窗口的菜單就像窗口的標(biāo)題欄一樣,是窗口自身的一部分,不是其他窗體控件,也就沒(méi)有辦法用FindWindow和FindWindowEx返回句柄。我們可以用win32gui模塊中的GetMenu,GetSubMenu和GetMenuItemID函數(shù)來(lái)操作菜單。
控件操作:控件的操作基于win32的消息機(jī)制,我們可以使用win32api模塊的SendMessage函數(shù)向窗體發(fā)送消息來(lái)進(jìn)行操作。同時(shí)也可以利用mouse_event、keybd_event等函數(shù)模擬鼠標(biāo)和鍵盤(pán)對(duì)控件進(jìn)行操作。
下面的代碼實(shí)現(xiàn)了記事本的自動(dòng)保存。
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-588691.html
Pywinauto
Pywinauto是實(shí)現(xiàn)Windows窗口程序自動(dòng)化的一把利器,它主要操作于Windows標(biāo)準(zhǔn)圖形界面。Pywinauto基于Pywin32,其最主要功能為對(duì)Windows標(biāo)準(zhǔn)控件的一系列動(dòng)作可編程處理,包括對(duì)窗口的指定、鼠標(biāo)或鍵盤(pán)操作、獲得控件屬性等等。相比起Pywin32,Pywinauto使用起來(lái)更方便穩(wěn)定,對(duì)中文的支持度也更好。下面簡(jiǎn)單地介紹一下Pywinauto的使用。
首先,利用Spy++或Inspec判斷窗口程序開(kāi)發(fā)語(yǔ)言是什么,即確定backend。Pywinauto支持“win32”和“uia”兩種backend。接著,從Pywinauto.application中導(dǎo)入Application模塊,利用Application().start函數(shù)或Application().connect函數(shù)關(guān)聯(lián)到一個(gè)應(yīng)用。如:app = Application(backend="uia").start('notepad.exe')。此后,利用正則表達(dá)式進(jìn)行模糊匹配找到應(yīng)用app的一個(gè)窗體,如:dlg = app.window_(title_re = ".*Part of Title.*")。最后,可以對(duì)窗體上的控件模擬鼠標(biāo)或鍵盤(pán)的操作,實(shí)現(xiàn)應(yīng)用窗口的自動(dòng)操作。
下面代碼實(shí)現(xiàn)了對(duì)記事本菜單的操作和鍵盤(pán)輸入。
?
Pyautogui
Pyautogui是另一個(gè)常用的基于Python的GUI自動(dòng)化工具,能夠支持多個(gè)平臺(tái)。Pyautogui主要是用程序自動(dòng)控制鼠標(biāo)和鍵盤(pán)操作。雖然Pyautogui和Pywinauto都是實(shí)現(xiàn)GUI 的自動(dòng)操作,但兩者的側(cè)重點(diǎn)不同。Pyautogui側(cè)重于鼠標(biāo)、鍵盤(pán)、截圖等功能,且是基于圖像匹配進(jìn)行定位的,而Pywinauto側(cè)重與對(duì)系統(tǒng)的操作,雖然也有鍵盤(pán)和鼠標(biāo)的模擬操作,但核心上還是軟件上的操作更多。兩者各有所長(zhǎng),需根據(jù)實(shí)際情況選擇合適的。
Pyautogui對(duì)鼠標(biāo)的移動(dòng)、點(diǎn)擊、拖拽,鍵盤(pán)按鍵輸入、按住操作,以及鼠標(biāo)+鍵盤(pán)的熱鍵同時(shí)按住等操作都能準(zhǔn)確模擬,可以說(shuō)手能動(dòng)的都可以,并且簡(jiǎn)單方便。但由于控件的定位依賴于圖像匹配,所以得事先保存好控件的截圖,然后在操作時(shí)自動(dòng)截取屏幕,利用圖像匹配找到控件在屏幕的像素位置,再將鼠標(biāo)自動(dòng)移至控件處點(diǎn)擊。Pyautogui自帶的圖像匹配函數(shù)精度不是很高,可以加入opencv中的匹配函數(shù)來(lái)代替,更加準(zhǔn)確方便。
下面代碼實(shí)現(xiàn)了百度網(wǎng)盤(pán)的自動(dòng)登錄。
Selenium with Python
Selenium與上面三種工具有點(diǎn)不同,它的自動(dòng)化對(duì)象是各種瀏覽器,包括Chrome、Safari、FireFox、IE等主流界面式的瀏覽器,常在爬蟲(chóng)應(yīng)用中發(fā)揮很大的作用。Selenium最為主要的模塊是Webdriver模塊。Webdriver提供了一系列瀏覽器對(duì)象定位的方法,常用的有id、name、class name、tag name、xpath、link text等等。定位對(duì)象后,Webdriver提供了操作對(duì)象的方法,包括清除內(nèi)容clear、模擬輸入send_keys、單擊鼠標(biāo)click、提交表單submit等等。有時(shí)候?yàn)榱吮WC腳本運(yùn)行的穩(wěn)定性,需要在腳本中添加等待時(shí)間,有sleep、implicitly_wait和WebDriverWait三種方法選擇。此外在多表單切換、多窗口切換、警告窗口處理、上傳文件、獲取驗(yàn)證碼等方面Webdriver都有相應(yīng)的方法,功能強(qiáng)大。
下面的代碼實(shí)現(xiàn)了模擬提交搜索功能,首先等頁(yè)面加載完成,然后輸入到搜索框文本,點(diǎn)擊提交。
?
?
本文分別介紹了Pywin32、Pywinauto、Pyautogui和Selenium with Python四種基于Python的自動(dòng)化工具包。使用這些工具包可以讓繁瑣的工作自己動(dòng)起來(lái),實(shí)現(xiàn)自動(dòng)化,解放我們的雙手,大大地提高工作效率。不過(guò)在智能方面還有很大的提升空間,這也是未來(lái)努力的方向。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-588691.html
到了這里,關(guān)于Python自動(dòng)化工具Pywinauto、Pyautogui的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!