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

基于Python+Selenium的高校畢業(yè)設(shè)計成果自動上傳系統(tǒng)

2022-12-17 07:53:55丁燁敏
現(xiàn)代計算機 2022年18期
關(guān)鍵詞:頁面界面

丁燁敏

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

0 引言

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

1 開發(fā)技術(shù)和環(huán)境

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

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

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

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

2 需求描述

學生畢業(yè)設(shè)計成果自動提交需要實現(xiàn)如下需求:

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

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

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

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

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

3 功能實現(xiàn)

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

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

3.1 Selenium打開網(wǎng)頁

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

from selenium import webdriver

driver=webdriver.Chrome()

driver.get(URL)

3.2 Selenium查找Web頁面節(jié)點元素

Selenium提供了多種查找Web頁面節(jié)點元素的 方 法[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列表類型(結(jié)果保存在list列表中)。查找Web頁面元素的示例如下。

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

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

可以使用element=driver.find_elements_by_id("phone")查找到界面上的該編輯框。返回值element表示查找結(jié)果對應(yīng)的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’]")。該種方法是通過相對定位來查找,//表示從匹配選擇的當前節(jié)點下繼續(xù)查找;*通配符,表示任意元素節(jié)點。整個語句表示HTML文件當前位置的任意元素節(jié)點下id名為inputForm的元素。

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

3.3 Selenium模擬用戶操作

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

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

3.4 Selenium切換窗口

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

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

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

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

driver.switch_to.frame(frame_name)

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

driver.switch_to.default_content()

3.5 文件上傳

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

在使用Selenium Webdriver打開Windows文件選擇窗口后,調(diào)用函數(shù)win32_select_file()可以實現(xiàn)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()的參數(shù)path表示要上傳的本地文件的完整路徑。執(zhí)行win32_select_file()函數(shù)后,即設(shè)置了需要上傳的文件,接下來依舊使用Selenium模擬人為操作,例如鼠標點擊等,觸發(fā)文件上傳。

3.6 保存鏈接地址

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

retUrl=driver.current_url

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

4 結(jié)語

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

猜你喜歡
頁面界面
微信群聊總是找不到,打開這個開關(guān)就好了
大狗熊在睡覺
刷新生活的頁面
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發(fā)方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機交互界面發(fā)展趨勢研究
手機界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 欧美国产中文| 99re精彩视频| 久久久精品无码一二三区| 国产三级视频网站| 国产福利不卡视频| 国产精品妖精视频| 狠狠亚洲婷婷综合色香| 日韩在线观看网站| 97成人在线视频| 美女毛片在线| 91精品久久久无码中文字幕vr| 久热re国产手机在线观看| 99免费在线观看视频| 色综合久久综合网| 最近最新中文字幕在线第一页| 国产91成人| av大片在线无码免费| 亚洲无码高清免费视频亚洲| 亚洲精品无码抽插日韩| 日日拍夜夜操| 99资源在线| 亚洲日韩图片专区第1页| 精品视频福利| 国产微拍精品| 蜜臀AV在线播放| 永久免费av网站可以直接看的| 草逼视频国产| 亚洲最新网址| 人妻无码中文字幕第一区| 国内精品伊人久久久久7777人| 日韩大乳视频中文字幕| 一级毛片在线播放免费观看| 婷婷丁香在线观看| 综合社区亚洲熟妇p| 久久中文字幕2021精品| 91久久精品国产| 毛片大全免费观看| 国产永久在线视频| 亚洲免费黄色网| 成人国产精品网站在线看| 又黄又爽视频好爽视频| 天天摸夜夜操| 亚洲高清中文字幕| 亚洲欧州色色免费AV| 欧美黄网在线| 夜夜高潮夜夜爽国产伦精品| 国产综合欧美| 伊人久热这里只有精品视频99| 国产又爽又黄无遮挡免费观看| 国产欧美精品专区一区二区| 日韩a级毛片| 亚洲毛片网站| 情侣午夜国产在线一区无码| 国内精品免费| AV网站中文| 精品色综合| 成年av福利永久免费观看| 久久精品无码中文字幕| 亚洲视频在线观看免费视频| 亚洲三级成人| 国产丝袜丝视频在线观看| 在线看国产精品| 欧美劲爆第一页| 亚洲AV人人澡人人双人| 免费看黄片一区二区三区| 欧美 亚洲 日韩 国产| 中文字幕在线一区二区在线| 国产欧美日韩va另类在线播放| 爆操波多野结衣| 91偷拍一区| 国产欧美在线观看视频| 91久久偷偷做嫩草影院| 日本高清视频在线www色| 蜜桃视频一区| 91无码人妻精品一区| 四虎永久在线| 日韩无码视频网站| 91久久偷偷做嫩草影院精品| 亚洲香蕉久久| 亚洲精品在线观看91| 91无码人妻精品一区| 亚洲swag精品自拍一区|