馬寧 陳曦 張李銘


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