馬寧 陳曦 張李銘
摘要:Python包含大量官方庫,可以實現(xiàn)種類繁多的編程工作,如Selenium庫可實現(xiàn)自動化測試,Openpyxl庫可操作excel數(shù)據(jù)表,這些庫可以極大地節(jié)約時間,提升工作效率。通過一個具體案例的設(shè)計實現(xiàn)過程闡述了如何采用Python的seleni-am、openpyxl等實3"EWeb腳本自動化操作,解決了項目中大量重復(fù)性工作的自動化實現(xiàn)目標(biāo)。
關(guān)鍵詞:Python;自動化;Openpyxl;Selenium
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)01-0051-03
1概述
在現(xiàn)實社會中,人們經(jīng)常需要進(jìn)行一系列重復(fù)性的操作,這些重復(fù)性的操作原理簡單,但是過程煩瑣,浪費了工作人員寶貴的時間。隨著社會的發(fā)展,IT技術(shù)日新月異,新技術(shù)不斷涌現(xiàn),人工測試也不再能滿足日益增長的復(fù)雜任務(wù)和可靠性測試需求,這就需要有效率更高、可靠性更強(qiáng)、更易操作的自動化測試方案。Selenium是web應(yīng)用程序自動化測試工具集,包括IDE、Grid、RC、WebDriver等,可以直接在瀏覽器中運行,模擬使用者的實際操作,具有很強(qiáng)的真實感,目前支持的主流瀏覽器包括IE系列、Opera瀏覽器、火狐瀏覽器等。利用自動化測試技術(shù),可設(shè)計腳本實現(xiàn)某些項目中的重復(fù)性程序執(zhí)行操作,讓辦公自動化實現(xiàn)智能化。
2Python與項目開發(fā)環(huán)境配置
2.1Python編程語言簡介
Python是一種跨平臺的計算機(jī)程序設(shè)計語言。起初由荷蘭程序員吉多·范羅蘇姆在1989年編寫。Python秉承優(yōu)雅、明確、簡單的設(shè)計哲學(xué),從而使得它的程序易讀懂、代碼量少。在1991年完成解釋器后,吉多將它開源,它的解釋器易于擴(kuò)展,可以使用c或c++擴(kuò)展各種新的功能和數(shù)據(jù)。Python還可用作可定制化軟件中的擴(kuò)展程序語言。如今,在廣大程序員集思廣益下,Python已最終發(fā)展成擁有強(qiáng)大的標(biāo)準(zhǔn)庫與大量第三方模塊支持的一門面向?qū)ο缶幊陶Z言。
2.2 Python開發(fā)環(huán)境安裝
1)下載Pvthon安裝包
在瀏覽器對應(yīng)地址欄中輸入python官網(wǎng)的下載欄目地址https://www.python.org/downloads/windows/。
然后,點擊最新版本進(jìn)入Pvthon3下載界面將彈出的新網(wǎng)頁移至最下端Files界面,選擇32位或64位安裝包,如圖1。
2)安裝
雙擊打開python安裝文件,如圖2,選擇自定義安裝,勾選AddPython 3,XX to PATH(此處若不勾選,完成安裝后還需手動配置環(huán)境變量1。進(jìn)入自定義安裝后依次將各個選項打勾,點擊Next,進(jìn)入如圖3界面,一次勾選后,點擊Browse選擇安裝路徑,此時如果需要配置環(huán)境變量,還須記住紅框內(nèi)的軟件安裝位置。安裝程序完成后會出現(xiàn)“Setupwassuccessful”提示,點擊界面右下角Close即可。
3)測試
Python安裝好后,還需測試安裝是否成功。用“Win+R”快捷鍵打開運行,輸入命令行工具“cmd”,在彈出黑框內(nèi)輸入“py-thon—V”然后鍵入回車,如果顯示如上圖4界面紅框部分,則說明Python安裝成功了。反之,如果命令下方出現(xiàn)“Python不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件”提示,則表示安裝未成功。需要重新檢測如上步驟是否操作正確。
3Web腳本自動化控制流程設(shè)計
3.1自動化流程控制技術(shù)簡介
自動化流程控制的出現(xiàn),提供了很多的便利。自動化控制完全由電腦進(jìn)行操作,人類不需要過多的操作,只需進(jìn)行一些條件設(shè)定即可。這極大地提高了準(zhǔn)確度,并且減少了人力的消耗,提高了效率。自動化流程控制主要有以下幾個優(yōu)點:
1)在對某個系統(tǒng)操作的過程中,可能會存在許多重復(fù)性的工作。人工完成這些工作明顯不是最好的方法,重復(fù)性高、過程煩瑣的工作利用自動化技術(shù)是最好的。
2)自動化控制的環(huán)境一般是相同的,結(jié)果也可以重復(fù)出現(xiàn),自動化控制能使每一次的操作流程都保持一致,不會缺少某些步驟。因此,自動化控制準(zhǔn)確性高、結(jié)果復(fù)現(xiàn)次數(shù)多。
3)自動化控制可以解決:假若某一流程的操作方法出現(xiàn)錯誤,或者有變更,則只需修改某一段代碼,即可開始執(zhí)行,也無須浪費人力、物力,而且操作簡單,無須適應(yīng)新的流程。
4)自動化流程控制是完成按照測試方案來執(zhí)行的,假若執(zhí)行成功,則可證明測試無誤,流程正確,無須其他推理論證過程。
3.2軟件設(shè)計流程
web自動化流程設(shè)計主要包括:制定自動化控制流程計劃,根據(jù)需求說明書分析具體需求,搭建變成環(huán)境,設(shè)計用例,再編寫代碼,并手動執(zhí)行。最后選擇自動化用例,再進(jìn)行自動化測試。具體流程如下:
3.3Web腳本自動流程控制軟件功能模塊
3.3.1selenium庫的介紹
selenium是一個用于web應(yīng)用程序的自動化控制工具。它能運行于多種瀏覽器,例如IE,火狐瀏覽器,Safari,谷歌瀏覽器,Opera等。在本研究中,selenium運行于Google瀏覽器上。selenium主要結(jié)合web前端的標(biāo)簽,通過尋網(wǎng)頁標(biāo)簽里的屬性,例如:class、id等,也可通過xpath來定位網(wǎng)頁中的元素。seleni-um可以定位元素,也可以對元素進(jìn)行操作,當(dāng)定位到一個文本框,可以自動輸入指定內(nèi)容,定位到關(guān)閉符號,可進(jìn)行關(guān)閉窗口操作等。selenium就像真實用戶操作一樣,對定位到的元素進(jìn)行點擊、插入文本等操作,且操作簡單、易學(xué),可使用Pvthon、Ja-va等多種語言實現(xiàn)。
3.3.2 selenium庫的使用方法
3.3.2.1導(dǎo)入selenium庫
Python導(dǎo)入庫的一般方法:from selenium import webdriver
3.3.2.2基本操作
1)啟動瀏覽器
在本研究中用的是谷歌瀏覽器,故使用以下方法:
driver=webdriver.Chrome()
2)打開網(wǎng)頁
driver.get(“http://XXX.XXX.XXX.XXX/index.html”)
30獲取元素的幾種方法
通過標(biāo)簽的類名獲取元素:find_element_by_class_name()
通過標(biāo)簽的id名獲取元素:find_element_by_id()
通過標(biāo)簽的xpath獲取元素:find_element_by_xpath()
通過標(biāo)簽的name名獲取元素:find_element_by_name()
4)frame的轉(zhuǎn)換
在網(wǎng)頁中,每一個功能都包含一個frame,無法直接用獲取元素的方法定位元素。用selenium切換frame的操作,使主頁面在眾多子頁面中進(jìn)行跳轉(zhuǎn),從而獲取元素。切換frame操作:driver,switch_to~flame(O)。也可以根據(jù)frame名字來切換flame:driver.switch_to.parent_frameO
5)向文本框輸入值:input.send_keys(“python”)
6)點擊某個元素:driver.find_element_by_id(“ys”).click()
7)執(zhí)行Js操作:driver.execute_script(window.scrollTo((),document.body.scrollHeight))
8)time操作
在本研究中,有可能時會找不到元素。究其原因,元素尚未加載完成。因此要給予元素加載的時間,待元素都加載完畢,才能定位到元素,并且進(jìn)行相關(guān)操作。步驟如下:
①導(dǎo)入time庫:import time
②進(jìn)行緩沖操作:time.sleep(3)
給予緩沖的時間后,元素加載完畢,繼續(xù)進(jìn)行相關(guān)操作。
3.3.30penpyxl庫的介紹
openpyxl是Pvthon中一個操作excel的庫,可以對excel庫中的數(shù)據(jù)進(jìn)行統(tǒng)計,也可以進(jìn)行讀寫操作。它可以在后臺打開excel表,并且支持excel表中的常規(guī)操作,例如:篩選、排序、單元格操作等。
3.3.4 openpyxl庫的使用
1)導(dǎo)入openpyxl庫:import openpyxl
21導(dǎo)入要處理的excel表格:wb=openpyxl.load_workbook('XXX,XIsx)
30激活工作簿
此時excel表格還不能正常操作。需要激活工作簿,才能進(jìn)行操作。
ws=wb.active
4)獲取所有行和列
在本研究中,要對所有數(shù)據(jù)進(jìn)行統(tǒng)計,因此需要獲取所有行、列中的數(shù)據(jù),以防數(shù)據(jù)缺漏。
row=xl sheet.max_row
column=xl_sheet.max_column
5)刪除不需要的數(shù)據(jù)
在excel表中,有一部分是要刪除的。Python中可以用匹配的方法,結(jié)合openpyxl庫中的函數(shù),刪除掉我們不需要的數(shù)據(jù)。具體實現(xiàn):
把不符合的先放入一個數(shù)組中:filters=[XX,YY,zz]
遍歷所有數(shù)據(jù),只要有以這三個為開頭的數(shù)據(jù),先執(zhí)行刪除操作:
符合的條件:str(ws['A'][i].value)[0:2]in filters)
刪除操作:ws.delete_rows(行數(shù))
6)進(jìn)行時間計算
在excel表中,有時候我們需要對時間進(jìn)行差值計算,并且篩選出符合條件的數(shù)據(jù),因此需要將實際時間與設(shè)定的時間相減,篩選出符合條件的進(jìn)行統(tǒng)計。具體實現(xiàn):
需要獲取時間:時間在AB列里,故獲取方式為:WS[“AB”][i].value,1
再作差:hour=float(houri-hour21
7)將統(tǒng)計完的數(shù)據(jù)進(jìn)行寫入操作:sheet.cell(行,列).value=值
8)保存excel表:excel.save(“TEST.xlsx”)
3.4界面功能模塊
軟件界面是使用Python中的tkinter開發(fā)模塊,tkinter是Py-thon標(biāo)準(zhǔn)的GUI庫,Pvthon在使用tkinter時能夠快速進(jìn)行各種簡單頁面的開發(fā),并tkinter可運行在多種平臺中。在本研究中,tkinter主要用于構(gòu)建軟件界面,以便操作人員設(shè)置數(shù)據(jù),選擇選項,使自動化控制流程在某些特定條件下進(jìn)行。
軟件的布局采用普通的設(shè)計布局。下面以本研究為例,設(shè)計軟件布局。軟件主要由以下部分組成:業(yè)務(wù)類型、是否超時、當(dāng)前時間設(shè)定、環(huán)節(jié)時間設(shè)定、選擇保存數(shù)據(jù)、開始執(zhí)行、結(jié)束執(zhí)行等功能。
軟件界面具體說明如下:
1)業(yè)務(wù)類型,包括:全選、用戶、報修、查詢、其他等多種業(yè)務(wù)類型。
2)是否超時,包括:是和否。
3)當(dāng)前時間,可以人為設(shè)置時間。
4)周期,包括年、月、日。
5)循環(huán)時間,可以人為設(shè)置。
3.4.1功能區(qū)開發(fā)
11業(yè)務(wù)類型選擇區(qū):主要存放網(wǎng)頁中可選擇的項,例如用電業(yè)務(wù)、報修、查詢、其他等可選項。
2)當(dāng)前時間填寫區(qū):因為要計算超過的時間,故要填寫超過的小時數(shù)。
3)周期選擇區(qū):主要由年、月、日組成,選擇計算的周期。
4)操作區(qū):主要包括三個按鈕:保存、開始、結(jié)束。
保存:在人工選擇完條件之后,需要進(jìn)行保存,點擊保存后,將會向主程序傳遞相關(guān)參數(shù),使主程序依照條件進(jìn)行自動化操作。
開始:開始執(zhí)行相關(guān)操作。
結(jié)束:結(jié)束執(zhí)行相關(guān)操作。
4實現(xiàn)技術(shù)總結(jié)
Python編程語言為解釋型編程語言,它短小精悍的語法,簡便清晰的代碼格式,使其成為當(dāng)今極其火熱的編程語言;并廣泛用于數(shù)據(jù)分析、人工智能、爬蟲和Web應(yīng)用等領(lǐng)域。本次研究是使用Pvthon在Web端的官方庫與第三方庫sdenium和openpyxl來進(jìn)行開發(fā)與實現(xiàn)。Seletium庫可以模擬瀏覽器操作、背后有GooSe維護(hù)源代碼、且支持全部主流瀏覽器與各種主流編程語言。Seletium通過使用WebDriver的各種API接口,為開發(fā)提供了一系列的定位符以便使用元素定位方法。open-pyxl模塊是一個讀寫Excel文檔的Pvthon庫,在處理Excel文檔上,有種類繁多的庫函數(shù),openpyxl能夠同時讀取和修改Excel文檔。它擁有的active、worksheets、read_onlv等對象屬性和方法,可以實現(xiàn)各種具體的Excel表格統(tǒng)計與整理工作。
這些自動化操作的實現(xiàn),大大降低了人工操作的時間與精力成本。它實現(xiàn)的各種網(wǎng)頁與Excel操作,使得自動化統(tǒng)計表格數(shù)據(jù)成為可能。在信息數(shù)量紛繁與復(fù)雜的當(dāng)下,自動化的技術(shù)變得越來越重要也被需要,去廣泛地代替人工操作煩瑣重復(fù)的工作。