999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python+Selenium的高校畢業設計成果自動上傳系統

2022-12-17 07:53:55丁燁敏
現代計算機 2022年18期
關鍵詞:頁面界面

丁燁敏

(湖南工業職業技術學院電氣工程學院,長沙 410208)

0 引言

學生的畢業設計成果的管理是一項繁瑣的工作,其中就包含畢業設計成果的保存。目前大部分高校都要求學生將畢業設計成果提交保存到指定的管理平臺。提交上傳畢業設計成果的工作,可能由學生自己,或者畢業設計指導老師完成,而且基本上都是通過手動完成。只要是人為的操作,就會出現問題。為了節省時間,提高畢業設計成果管理工作的效率,使用應用程序實現畢業設計成果自動上傳提交非常有必要。

1 開發技術和環境

學生畢業設計成果管理平臺一般都是通過Web進行交互操作。因為管理平臺的API不一定開放給一般用戶使用。所以,要實現自動上傳功能,必須考慮到和畢業設計成果管理平臺Web界面的交互操作。

目前能夠實現與Web界面自動交互的工具有Selenium[1]、QTP[2]、Watir[3]、Robot Framework[4]等。QTP是商業版本不免費,使用成本太高。Watir使用Ruby語言進行腳本開發,對于沒有學過Ruby的用戶而言可能存在一些困難。Robot Framework功能很強大,但是更適用于進行自動化測試。Selenium是一個強大的Web自動化工具,使用靈活并且支持各種語言、多種操作系統和瀏覽器,并且是開源的。綜合考慮,確定使用Selenium實現Web自動交互。

登錄管理平臺需要獲取學生的相關信息,例如學生的賬戶、密碼、班級學號、課題名稱等,這些數據可能保存在excel表格中。因此,讀取excel文件數據也成為畢業設計成果上傳提交的前提。Python提供了強大的文件讀取和數據處理功能,并且也提供了Selenium程序包。因此最終確認使用Python+Selenium的開發技術來實現畢業設計成果自動上傳功能。

開發環境方面,操作系統使用的是Windows 10。Python選用的版本是3.7.3。Python環境安裝完成后,使用pip install selenium命令在線安裝selenium最新版本,安裝成功后可以使用pip show selenium命令查看安裝的selenium版本。集成開發環境使用PyCharm。

2 需求描述

學生畢業設計成果自動提交需要實現如下需求:

(1)自動讀取本地excel文件中保存的學生畢業設計相關信息,包括學生姓名、班級學號、畢業設計課題名稱、管理平臺用戶名、管理平臺密碼等。

(2)自動打開管理平臺網頁,使用用戶名和密碼自動進行登錄。

(3)自動在管理平臺新建畢業設計課題任務。

(4)自動提交畢業設計成果并保存。

(5)自動獲取畢業設計成果上傳后的鏈接網址,并保存到本地excel文件中。

3 功能實現

通過上面功能描述,可以將程序分為兩大功能模塊:excel文件處理和Web自動交互。excel文件處理功能模塊主要使用pandas程序包實現,可以使用pip install pandas安裝pandas。使用pandas讀寫excel文件的內容不做詳細描述,在這里主要介紹使用Selenium如何實現自動和Web進行交互。

實現和Web自動交互,就需要打開Web界面,找到Web界面上的元素,模擬人為操作,例如鍵盤輸入、鼠標點擊、文件選擇等功能。

3.1 Selenium打開網頁

Selenium支持多種瀏覽器,本程序使用的是谷歌瀏覽器。在配置完瀏覽器后,需要使用Selenium WebDriver加載要打開管理平臺Web對應的鏈接地址(URL)。示例代碼如下:

from selenium import webdriver

driver=webdriver.Chrome()

driver.get(URL)

3.2 Selenium查找Web頁面節點元素

Selenium提供了多種查找Web頁面節點元素的 方 法[5],具 體包 括:find_element_by_id、find_element_by_name、find_element_by_xpath、find_element_by_link_text、find_element_by_partial_link_text、find_element_by_tag_name、find_element_by_class_name、find_element_by_css_selector。需要注意的是,這些方法的返回值是list列表類型(結果保存在list列表中)。查找Web頁面元素的示例如下。

使用手機號作為登錄名進行登錄時,輸入手機號碼的編輯框HTML描述如下:

<input type="text"class="ipt-tel"placeholder="手機號"id="phone"maxlength="50">

可以使用element=driver.find_elements_by_id("phone")查找到界面上的該編輯框。返回值element表示查找結果對應的list列表。

登錄按鈕的HTML描述如下:

<input type="button"value="登錄"class="loginSub"onclick="goPassport2Login();">

可以使用element=driver.find_elements_by_class_name("loginSub")查找到界面上的該登錄按鈕。

當頁面的元素既沒有id屬性也沒有name屬性時,可以使用xpath來查找該元素。xpath表示xml元素的路徑,它完全可以替代其他元素(id、name、class_name、tag_name等)定位方式。其HTML描述如下:

<html>

<body>

<form id="inputForm"name="inputForm">

<input type="text"name="subject"id="subject"value=""placeholder="輸入專題名稱">

<input type="text"name="author"id="author"value=""placeholder="輸入作者名">

</form>

</body>

<html>

查找form表單元素,可以使用如下方法:element=driver.find_elements_by_xpath("/html/body/form")。該種方法使用form表單元素在HTML文件中完整路徑位置來進行定位查找。

當然也可以使用element=driver.find_elements_by_xpath("http://*[@id=’inputForm’]")。該種方法是通過相對定位來查找,//表示從匹配選擇的當前節點下繼續查找;*通配符,表示任意元素節點。整個語句表示HTML文件當前位置的任意元素節點下id名為inputForm的元素。

除了使用*通配符,在xpath中還可以使用文本定位、模糊定位等。例如element=driver.find_elements_by_xpath("http://*//input[starts-with(@id,'sub')]"),表示在HTML文件當前位置的任意元素節點下找到id名以sub開頭的節點元素。

3.3 Selenium模擬用戶操作

找到頁面節點元素后,需要模擬用戶的操作。例如鍵盤輸入數據、點擊等。上文使用element=driver.find_elements_by_id("phone")找到輸入手機號碼的編輯框,可以使用element[0].send_keys(phoneNumber)模擬用戶在該編輯框中輸入手機號碼。注意這里使用的是element[0],因為find_element_by_id的返回結果是list列表,需要指定取出該列表中指定位置的元素。

同樣,上文使用element=driver.find_elements_by_class_name("loginSub")找到界面上的登錄按鈕后,可以使用element[0].click(),或者element[0].send_keys(Keys.ENTER),模擬用戶點擊該按鈕。其中Keys.ENTER表示回車鍵。

3.4 Selenium切換窗口

當Web界面進行跳轉打開新的Web界面時,Selenium需要切換窗口才能在新的Web頁面進行元素節點查找[6]。具體如下:

driver.switch_to.window(driver.window_handles[-1])

語句中window_handles表示Web窗口界面句柄列表,-1表示切換到最后一個界面,也就是最新打開的界面。如果目前已經打開了三個Web窗口界面,上面的語句中將-1改為-2,即可跳轉到第二個Web窗口界面進行操作。也可以通過first_win=driver.current_window_handle獲取當前Web窗口界面的handle句柄。后續如果需要切換回該Web窗口界面時,執行driver.switch_to.window(first_win)即可。

當然,HTML中也有iframe標簽,表示內聯框架,可以理解為在一個HTML中內嵌一個子HTML。Selenium不能直接在父HTML中查找到iframe中定義的元素節點,也需要先進行切換[7],具體方法如下:

driver.switch_to.frame(frame_name)

其中,frame_name表示iframe的名稱。執行上述語句后即可跳轉到iframe中操作節點元素。當iframe中操作結束,需要返回到之前的Web窗口界面時,需要執行如下語句。

driver.switch_to.default_content()

3.5 文件上傳

當在Web界面中點擊文件上傳時,首先需要用戶選擇本地文件。Python中如何實現自動選擇本地文件呢?此時需要借助pywin32程序包。pywin32程序包包含了Windows系統的Win32 API,能創建和使用COM對象和圖形窗口界面。可以使用pip install pywin32命令進行安裝。

在使用Selenium Webdriver打開Windows文件選擇窗口后,調用函數win32_select_file()可以實現Windows本地文件選擇。

import win32gui

import win32con

def win32_select_file(path):

dialog=win32gui.FindWindow("#32770","打開")#"#32770"表示彈出框的窗口類名

comboBoxEX32=win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None)

comboBox=win32gui.FindWindowEx(comboBox-EX32,0,"ComboBox",None)

editBox=win32gui.FindWindowEx(comboBox,0,"Edit",None)

button=win32gui.FindWindowEx(dialog,0,"Button","打開(&0)")

win32gui.SendMessage(editBox,win32con.WM_SETTEXT,None,path)

win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)

其中win32_select_file()的參數path表示要上傳的本地文件的完整路徑。執行win32_select_file()函數后,即設置了需要上傳的文件,接下來依舊使用Selenium模擬人為操作,例如鼠標點擊等,觸發文件上傳。

3.6 保存鏈接地址

所有上傳文件操作、保存操作結束后,需要保存畢業設計成果上傳保存后的Web頁面鏈接。在Selenium中可以使用如下語句獲取當前Web頁面鏈接地址。

retUrl=driver.current_url

retUrl即保存當前Web頁面的鏈接地址。如果畢業設計成果上傳后保存的Web頁面鏈接地址并非當前Web界面的鏈接地址,那么可以結合Selenium切換窗口的操作,最終獲取到畢業設計成果上傳后保存的Web頁面鏈接地址。

4 結語

本文使用Python+Selenium,實現對高校學生的畢業設計成果自動提交保存到管理平臺功能,測試結果表明,Python+Selenium實現的程序代碼簡潔凝練,通俗易懂,便于維護,可以大大減少學生、老師重復性的繁瑣工作,并且能夠保證提交的質量。對于有類似需求的工作場景,也具有非常高的參考價值。

猜你喜歡
頁面界面
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 久久这里只有精品2| 午夜免费视频网站| 国产一区二区三区在线无码| 久久人人爽人人爽人人片aV东京热| 国产原创演绎剧情有字幕的| 国产精品亚洲αv天堂无码| 毛片基地视频| 亚洲综合九九| 国产综合日韩另类一区二区| 国产精品亚洲αv天堂无码| 激情视频综合网| 欧美成人一级| 亚洲清纯自偷自拍另类专区| 91po国产在线精品免费观看| 亚洲天堂成人在线观看| 亚洲AV无码不卡无码 | 国产精品污视频| 超碰精品无码一区二区| 精品久久人人爽人人玩人人妻| 中文字幕久久波多野结衣| 国产激爽大片在线播放| 国产美女叼嘿视频免费看| 亚洲人成电影在线播放| 亚洲午夜福利精品无码不卡| 91精品啪在线观看国产60岁| 久久久噜噜噜久久中文字幕色伊伊 | 91无码人妻精品一区| 97se亚洲| 亚洲欧美不卡中文字幕| 国产极品美女在线播放| 好紧太爽了视频免费无码| 亚洲天堂精品视频| 欧美爱爱网| 久久久无码人妻精品无码| 精品久久久久无码| 亚洲精品第五页| 日本免费新一区视频| 国产一区自拍视频| 国产区福利小视频在线观看尤物| 日韩精品久久无码中文字幕色欲| 爱做久久久久久| 国产精品综合久久久| 亚洲欧美日韩高清综合678| AV不卡国产在线观看| 色窝窝免费一区二区三区| 色吊丝av中文字幕| 国产91透明丝袜美腿在线| 亚洲AV无码久久天堂| 国产精品30p| 午夜三级在线| 日韩国产精品无码一区二区三区 | 久久久久免费精品国产| 欧美在线精品怡红院| 国产午夜无码专区喷水| 精品福利国产| 99久久成人国产精品免费| 人人91人人澡人人妻人人爽| 亚洲精品第一页不卡| 99re精彩视频| 成人午夜免费观看| 日本三级欧美三级| 高清码无在线看| 波多野结衣AV无码久久一区| 日日摸夜夜爽无码| 亚洲国产综合精品一区| 国产你懂得| 自偷自拍三级全三级视频| 亚洲系列中文字幕一区二区| 小说区 亚洲 自拍 另类| 国产成人久视频免费| 国产精品人成在线播放| 亚洲日韩久久综合中文字幕| 成人一区专区在线观看| 亚洲人成在线精品| 欧美午夜在线播放| 中文字幕在线不卡视频| 久久久久夜色精品波多野结衣| 国产小视频在线高清播放| 波多野结衣无码AV在线| 久久综合色88| 国产精品第一区在线观看| 波多野结衣无码AV在线|