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

借助WebDriver技術(shù)實(shí)現(xiàn)圖書(shū)館Web業(yè)務(wù)操作自動(dòng)化

2018-03-18 19:59:41候志江
新世紀(jì)圖書(shū)館 2018年2期

候志江

摘 要 論文以圖書(shū)館VPN賬號(hào)的自動(dòng)審核為例,介紹了WebDriver在圖書(shū)館業(yè)務(wù)操作自動(dòng)化中的應(yīng)用。實(shí)踐證明,通過(guò)引入WebDriver自動(dòng)化技術(shù)不僅能夠大幅提高工作效率,還提升了用戶體驗(yàn)和滿意度。論文探討了該技術(shù)在圖書(shū)館的廣闊應(yīng)用前景,并提供了Github案例全部的演示視頻以及完整的源代碼。

關(guān)鍵詞 賬號(hào)自動(dòng)審核 WebDriver 圖書(shū)館自動(dòng)化

分類號(hào) G250.7

DOI 10.16810/j.cnki.1672-514X.2018.02.015

Using WebDriver to Implement the Automation of Business in Library: Taking Auto-verification of VPN Accounts for Example

Hou Zhijiang

Abstract Taking the automatic verification of VPN account as an example, this paper introduces the application of WebDriver in the automation of library business. In practice, it has proved that WebDriver raises the efficiency greatly and improves users experience and satisfaction. Then, this paper discusses some promising use case of this technology in library, and provides both the demo video and all related source code of Github.

Keywords Account auto-verification. WebDriver. Automation of library.

0 背景

為了方便師生在校外訪問(wèn)圖書(shū)館電子資源,筆者所在圖書(shū)館使用了某VPN遠(yuǎn)程訪問(wèn)系統(tǒng)。出于安全考慮,圖書(shū)館需要驗(yàn)證用戶的真實(shí)身份,為此,圖書(shū)館安排專職人員進(jìn)行賬號(hào)申請(qǐng)者的身份驗(yàn)證。這項(xiàng)業(yè)務(wù)的流程是,先由用戶自助注冊(cè)申請(qǐng)賬號(hào),然后等待圖書(shū)館館員審核,審核通過(guò)后賬號(hào)即可生效使用。這一流程看似沒(méi)有問(wèn)題,但隨著時(shí)間的推移,時(shí)效性問(wèn)題逐步凸顯出來(lái)。考慮到周末和節(jié)假日,圖書(shū)館給讀者的承諾是三天內(nèi)完成賬號(hào)審核,但在實(shí)際中要求專職館員加大賬號(hào)審核處理頻次,每天務(wù)必處理三次。而最近的一次讀者調(diào)查結(jié)果顯示,這項(xiàng)服務(wù)是讀者對(duì)圖書(shū)館服務(wù)最不滿意的一項(xiàng)服務(wù),理由是等待審核的時(shí)間太長(zhǎng)了,尤其是遇上周末,一等就得兩三天。進(jìn)一步調(diào)查訪談發(fā)現(xiàn),原來(lái)很多讀者想到使用校外訪問(wèn)VPN系統(tǒng)時(shí),多數(shù)是在一些比較著急的情況下,例如科研中突然需要用到一篇文獻(xiàn),或者在家中突然有一個(gè)思路想要驗(yàn)證等等,所以漫長(zhǎng)的等待讓用戶覺(jué)得難以接受。要解決這個(gè)問(wèn)題,光靠加大人工審核頻次是不行的。為了提高用戶滿意度,必須依靠自動(dòng)化技術(shù)。沿著這一思路,筆者開(kāi)始探尋一種能夠?qū)崿F(xiàn)Web操作自動(dòng)化的技術(shù),用機(jī)器來(lái)彌補(bǔ)人工的不足。最終,筆者發(fā)現(xiàn)WebDriver自動(dòng)化技術(shù),能成功完成VPN賬號(hào)自動(dòng)審核任務(wù),達(dá)到良好效果。

1 WebDriver簡(jiǎn)介

WebDriver全稱Selenium WebDriver,是知名軟件自動(dòng)化測(cè)試框架Selenium[1]的最新版本,代表了目前最先進(jìn)的現(xiàn)代Web程序自動(dòng)化測(cè)試技術(shù)。在本研究中,筆者對(duì)軟件自動(dòng)化測(cè)試領(lǐng)域的技術(shù)加以借鑒和整合,將其應(yīng)用到圖書(shū)館Web業(yè)務(wù)操作的自動(dòng)化中來(lái)。

WebDriver的工作原理如圖1所示。WebDriver的核心是一組與瀏覽器交互通訊的接口和協(xié)議,使得外部程序能夠通過(guò)這一標(biāo)準(zhǔn)編程接口與任何遵循該協(xié)議的瀏覽器直接進(jìn)行交互,從而繞過(guò)鼠標(biāo)、鍵盤(pán)等用戶交互設(shè)備,直接向?yàn)g覽器發(fā)出各種操作指令。目前大多數(shù)主流的瀏覽器例如IE、FireFox、Chrome等均支持WebDriver,各自都提供有WebDriver驅(qū)動(dòng)程序。

圖1中的箭頭方向描述了WebDriver程序工作的流程。以點(diǎn)擊網(wǎng)頁(yè)中的按鈕為例,可以更加清楚地描述其工作原理:用戶在Python程序中指出要執(zhí)行點(diǎn)擊動(dòng)作的按鈕及其標(biāo)識(shí)參數(shù),SDK(Software Development Kit)軟件包將高級(jí)語(yǔ)言翻譯成底層WebDriver協(xié)議的通訊指令,通知給瀏覽器的WebDriver驅(qū)動(dòng)程序(例如Firefox驅(qū)動(dòng)程序),驅(qū)動(dòng)程序再指示Firefox瀏覽器執(zhí)行命令,最后,由瀏覽器在內(nèi)核中對(duì)相應(yīng)的按鈕進(jìn)行點(diǎn)擊操作,最終的效果與用戶使用鼠標(biāo)在頁(yè)面上點(diǎn)擊該按鈕的效果完全相同。除Python語(yǔ)言外,WebDriver官方還提供了Java、Ruby等多種編程語(yǔ)言的軟件開(kāi)發(fā)工具包,為用戶提供了更加簡(jiǎn)單方便的面向?qū)ο蟮木幊探涌赱2]。

從文獻(xiàn)來(lái)看,過(guò)去有研究人員嘗試使用操作系統(tǒng)底層編程[3]和鼠標(biāo)鍵盤(pán)操作記錄器(例如按鍵精靈[4])兩種方法來(lái)實(shí)現(xiàn)Web操作自動(dòng)化,但這兩種方法由于通用性和兼容性較差,一直難以得到廣泛的推廣和應(yīng)用。與過(guò)去Web業(yè)務(wù)自動(dòng)化技術(shù)相比,WebDriver具有較為顯著的優(yōu)勢(shì),具體為:(1) 功能豐富而強(qiáng)大。WebDriver的各項(xiàng)功能都是瀏覽器廠商原生支持并實(shí)現(xiàn)的,所以幾乎所有的用戶交互操作,例如鼠標(biāo)單擊、雙擊、滾動(dòng)、拖拽、鍵盤(pán)輸入等都可以通過(guò)WebDriver接口來(lái)完成。而且,WebDriver還可以與外部編程語(yǔ)言無(wú)縫結(jié)合,可以在頁(yè)面環(huán)境中執(zhí)行JavaScript腳本,使得其功能更加靈活強(qiáng)大,基本可實(shí)現(xiàn)所有常見(jiàn)的Web網(wǎng)頁(yè)交互操作。(2) 學(xué)習(xí)曲線平滑。WebDriver官方提供了多種便捷的軟件開(kāi)發(fā)工具包,用戶可以任選一種自己熟悉的語(yǔ)言進(jìn)行開(kāi)發(fā)。經(jīng)過(guò)封裝的編程接口與自然語(yǔ)言十分接近,初學(xué)者可以快速上手。(3) 技術(shù)方案成熟,穩(wěn)定可靠。WebDriver被全球軟件企業(yè)廣泛應(yīng)用,在自動(dòng)化軟件測(cè)試領(lǐng)域頗為知名,其可靠性得到了充分的驗(yàn)證,有著豐富的技術(shù)資料和幫助文檔。

2 實(shí)現(xiàn)方案描述

在本研究中,筆者使用Python語(yǔ)言進(jìn)行編程開(kāi)發(fā),通過(guò)FirefoxDriver驅(qū)動(dòng)Firefox瀏覽器執(zhí)行VPN賬號(hào)審核操作。賬號(hào)自動(dòng)審核程序的基本流程圖如圖2所示。圖中虛線框包圍的部分表示通過(guò)調(diào)用WebDriver接口完成的功能,框外部分則是使用Python代碼自行實(shí)現(xiàn)的程序業(yè)務(wù)邏輯。

從圖2中可以看出,程序的主框架是一個(gè)大循環(huán)。通過(guò)該循環(huán),程序每隔1分鐘(間隔時(shí)間值可自定義)登錄一次后臺(tái)賬號(hào)管理系統(tǒng),檢查是否有待審核賬號(hào)。如果有,則提取注冊(cè)信息,然后根據(jù)自定義的審核邏輯進(jìn)行判別,決定是否通過(guò)審核,通過(guò)則調(diào)用WebDriver模擬點(diǎn)擊“審核通過(guò)”按鈕,沒(méi)有通過(guò)則模擬點(diǎn)擊“拒絕申請(qǐng)”按鈕。在此過(guò)程中,WebDriver的核心操作主要包括“讀取用戶注冊(cè)信息”和“模擬點(diǎn)擊操作按鈕”兩個(gè)。筆者在下文將以這兩個(gè)核心操作為例,介紹程序的關(guān)鍵實(shí)現(xiàn)原理。

(1) 讀取用戶注冊(cè)信息。以讀取注冊(cè)用戶的姓名為例。首先需要通過(guò)分析網(wǎng)頁(yè)結(jié)構(gòu)布局來(lái)定位“姓名”所在的網(wǎng)頁(yè)元素。WebDriver提供了多種方式來(lái)定位網(wǎng)頁(yè)元素,這里以XPath方式為例。XPath是一種用來(lái)描述HTML文檔中元素位置的語(yǔ)言,HTML是一種樹(shù)形結(jié)構(gòu)的文檔,而XPath類似于描述元素“地址”的語(yǔ)言。例如“姓名”字段元素的XPath位置為“html/body/div[2]/div/form/table/tbody/tr[1]/td[2]”,則可以通過(guò)以下Python程序代碼來(lái)獲取姓名的字符串值。

# 創(chuàng)建一個(gè)WebDriver對(duì)象

driver = webdriver.Firefox();

# 打開(kāi)操作頁(yè)面

driver.get(siteURL);

# 根據(jù)元素的XPath定位元素對(duì)象

nameXPath=“html/body/div[2]/div/form/table/tbody/tr[1]/td[2]”;

nameElement=driver.find_element_by_xpath (nameXPath);

#通過(guò)元素對(duì)象的text屬性,讀出“姓名”字段值

name = nameElement.text;

通過(guò)類似的方法,即可獲得注冊(cè)用戶的各種信息,例如借閱證號(hào)碼、學(xué)院、用戶類型等其它信息。這些信息將作為審核邏輯的輸入?yún)?shù)。審核邏輯與WebDriver的使用無(wú)關(guān),是用戶根據(jù)業(yè)務(wù)規(guī)則自定義的函數(shù),只要基于這些輸入信息,做出是否通過(guò)審核的判斷決策即可。

(2) 模擬點(diǎn)擊操作按鈕。正如讀取注冊(cè)信息所示,WebDriver在執(zhí)行交互操作時(shí)基本都遵循先定位元素,后調(diào)用操作函數(shù)的步驟。點(diǎn)擊“審核通過(guò)”按鈕,也需要先定位該按鈕在頁(yè)面中的位置。除了使用XPath外,WebDriver還支持通過(guò)id標(biāo)識(shí)符、鏈接文字、標(biāo)簽名、CSS選擇器等多種方式來(lái)確定元素的位置,具體可查看WebDriver手冊(cè)文檔[2]。例如,可以通過(guò)鏈接文字“審核通過(guò)”來(lái)查找定位該按鈕,然后調(diào)用單擊click()方法,來(lái)實(shí)現(xiàn)“審核通過(guò)”按鈕的模擬點(diǎn)擊。具體Python源代碼如下:

#創(chuàng)建一個(gè)WebDriver對(duì)象

driver = webdriver.Firefox();

#打開(kāi)操作頁(yè)面

driver.get(siteURL);

# 通過(guò)按鈕上的鏈接文字來(lái)定位按鈕元素

passButton=driver.find_element_by_link_text (“審核通過(guò)”) ;

#調(diào)用元素對(duì)象的click()函數(shù),模擬完成點(diǎn)擊操作。

passButton.click();

以上兩個(gè)基本操作涵蓋了WebDriver的核心功能,也正是賬號(hào)自動(dòng)審核程序的關(guān)鍵部分。除此之外,還有一個(gè)細(xì)節(jié)的地方值得特別說(shuō)明并引起讀者注意:WebDriver代碼采用異步執(zhí)行方式,在執(zhí)行下一條語(yǔ)句時(shí),前一條語(yǔ)句并不一定已經(jīng)完成并產(chǎn)生結(jié)果。所以在打開(kāi)新頁(yè)面,或者代碼操作引起頁(yè)面變化時(shí),需要酌情進(jìn)行一定時(shí)間的等待,通常調(diào)用Python中的sleep語(yǔ)句將線程掛起若干秒,等待頁(yè)面完成刷新,即可解決這一問(wèn)題。

3 實(shí)踐效果及前景

筆者使用上述方案,實(shí)現(xiàn)了圖書(shū)館VPN賬號(hào)的自動(dòng)審核,程序運(yùn)行的界面可參考筆者提供的程序演示視頻[5]。

在程序投入使用后,收到了較好的效果。首先,大幅提高了審核效率,賬號(hào)審核的最長(zhǎng)時(shí)滯由過(guò)去的三天縮短到一分鐘,而且7*24小時(shí)全天候無(wú)節(jié)假日實(shí)時(shí)自動(dòng)審核,極大地提升了用戶體驗(yàn)。在2015年12月到2016年6月程序試運(yùn)行的這段時(shí)間里,統(tǒng)計(jì)數(shù)據(jù)顯示,98%的注冊(cè)賬號(hào)能夠通過(guò)自動(dòng)審核,達(dá)到了賬號(hào)實(shí)時(shí)生效的效果。與此同時(shí),節(jié)省了大量人力,減輕了館員的工作負(fù)擔(dān),館員只需定期處理少量未通過(guò)自動(dòng)審核的用戶,提醒他們注意修改注冊(cè)資料即可,從而使館員能夠抽出時(shí)間來(lái)從事其它更深層次的工作。總之,VPN賬號(hào)審核的自動(dòng)化,不僅得到了師生用戶的一致好評(píng),還得到了館員的歡迎和贊許。

這項(xiàng)自動(dòng)化技術(shù)具有普適性,在Web業(yè)務(wù)日益普及的今天,WebDriver在圖書(shū)館潛在的應(yīng)用場(chǎng)景也越來(lái)越多。例如,可以借助WebDriver進(jìn)行文獻(xiàn)自動(dòng)傳遞、進(jìn)行電子資源可用性的自動(dòng)監(jiān)測(cè)、學(xué)科動(dòng)態(tài)新聞的自動(dòng)跟蹤和抓取等等。現(xiàn)階段,我國(guó)圖書(shū)館的業(yè)務(wù)有較大的相似性和類同性,試想如果能夠進(jìn)一步建立一個(gè)全國(guó)范圍的WebDriver自動(dòng)化腳本共享交流平臺(tái),將極大地提高國(guó)內(nèi)圖書(shū)館的工作效率和服務(wù)質(zhì)量。

當(dāng)前的圖書(shū)館有不少類似的需要人工去做的重復(fù)性業(yè)務(wù)工作,效率和用戶體驗(yàn)都存在較大的提升空間。本文旨在將WebDriver自動(dòng)化方案介紹給國(guó)內(nèi)廣大同仁,期待能引起廣大圖書(shū)館技術(shù)人員對(duì)WebDriver自動(dòng)化技術(shù)的關(guān)注和重視,同時(shí)也希望大家可以舉一反三,思考并嘗試實(shí)現(xiàn)日常業(yè)務(wù)的自動(dòng)化,進(jìn)一步推進(jìn)圖書(shū)館服務(wù)的優(yōu)化和升級(jí)。為此,筆者將本課題的源代碼全部放在Github網(wǎng)站開(kāi)放下載[6],希望能夠?yàn)榇蠹易灾鏖_(kāi)發(fā)提供一個(gè)基礎(chǔ)框架。

參考文獻(xiàn):

Selenium Project. Selenium WebDriver[EB/OL].[2015-06-12].http://www.seleniumhq.org/projects/webdriver/.

WebDriver Python Bindings. API Documentation[EB/OL].[2015-07-10].http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html.

朱玉強(qiáng).圖書(shū)館電子資源可否瀏覽及下載監(jiān)測(cè)程序設(shè)計(jì)[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2013(11):86-90.

按鍵精靈.鼠標(biāo)鍵盤(pán)模擬器[EB/OL].[2015-7-12].http://www.anjian.com/.

侯志江.圖書(shū)館賬號(hào)自動(dòng)審核演示視頻[EB/OL].

[2015-09-21].http://v.youku.com/v_show/id_XMTM0MTE5MDEyMA==.html.

Github. WebDriver開(kāi)發(fā)指引[EB/OL].[2015-09-21].

https://github.com/tjut/auto-audit.

主站蜘蛛池模板: 手机在线免费不卡一区二| 国产成人综合久久精品下载| 天天躁夜夜躁狠狠躁图片| 国产欧美高清| 国产精品视频久| 亚洲系列中文字幕一区二区| 91小视频版在线观看www| 婷婷开心中文字幕| 尤物精品视频一区二区三区| 欧美成在线视频| 国产成人精品第一区二区| 国产综合日韩另类一区二区| 亚洲国模精品一区| 国产麻豆永久视频| 国产不卡在线看| 国产成人乱码一区二区三区在线| 国产精品第一区在线观看| 日韩大片免费观看视频播放| 一级做a爰片久久毛片毛片| 国产精品9| AV片亚洲国产男人的天堂| 精品国产黑色丝袜高跟鞋| 精品久久人人爽人人玩人人妻| 成·人免费午夜无码视频在线观看| 色综合天天娱乐综合网| 亚洲欧美另类中文字幕| 国产福利一区在线| 国产精品亚洲а∨天堂免下载| 美女裸体18禁网站| 国产成人免费手机在线观看视频 | www.日韩三级| 国内精自视频品线一二区| 成人无码区免费视频网站蜜臀| 欧美国产精品不卡在线观看 | 色妞永久免费视频| 色悠久久久| 日韩成人免费网站| 欧美精品亚洲精品日韩专区va| 久久人人爽人人爽人人片aV东京热 | 久久成人免费| 中文字幕欧美日韩| 全午夜免费一级毛片| 看国产毛片| 精品国产免费观看| 色综合天天视频在线观看| 久久情精品国产品免费| 天天躁日日躁狠狠躁中文字幕| 亚洲天堂网视频| 国产va在线| 欧美激情一区二区三区成人| 亚洲无码视频喷水| 丁香六月激情综合| 午夜激情福利视频| 丰满少妇αⅴ无码区| 日韩精品专区免费无码aⅴ| 久久综合久久鬼| 美女扒开下面流白浆在线试听| 欧美中文字幕一区| 色婷婷国产精品视频| 国产精品视频久| 亚洲无码精彩视频在线观看| 国产成人在线无码免费视频| 日韩中文精品亚洲第三区| 亚洲a级毛片| 久久精品免费国产大片| 在线观看国产网址你懂的| 国产午夜在线观看视频| 99精品高清在线播放| 国产精品一区在线观看你懂的| 久久久国产精品免费视频| 91精品国产自产在线老师啪l| 在线永久免费观看的毛片| 丁香综合在线| 美美女高清毛片视频免费观看| 国产高清又黄又嫩的免费视频网站| 国产大片黄在线观看| 污网站在线观看视频| 亚洲成人精品| 国产福利免费视频| 国产资源站| 999福利激情视频| 最新日韩AV网址在线观看|