• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      候志江

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

      關(guān)鍵詞 賬號(hào)自動(dòng)審核 WebDriver 圖書館自動(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)圖書館電子資源,筆者所在圖書館使用了某VPN遠(yuǎn)程訪問(wèn)系統(tǒng)。出于安全考慮,圖書館需要驗(yàn)證用戶的真實(shí)身份,為此,圖書館安排專職人員進(jìn)行賬號(hào)申請(qǐng)者的身份驗(yàn)證。這項(xiàng)業(yè)務(wù)的流程是,先由用戶自助注冊(cè)申請(qǐng)賬號(hào),然后等待圖書館館員審核,審核通過(guò)后賬號(hào)即可生效使用。這一流程看似沒(méi)有問(wèn)題,但隨著時(shí)間的推移,時(shí)效性問(wèn)題逐步凸顯出來(lái)。考慮到周末和節(jié)假日,圖書館給讀者的承諾是三天內(nèi)完成賬號(hào)審核,但在實(shí)際中要求專職館員加大賬號(hào)審核處理頻次,每天務(wù)必處理三次。而最近的一次讀者調(diào)查結(jié)果顯示,這項(xiàng)服務(wù)是讀者對(duì)圖書館服務(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)用到圖書館Web業(yè)務(wù)操作的自動(dòng)化中來(lái)。

      WebDriver的工作原理如圖1所示。WebDriver的核心是一組與瀏覽器交互通訊的接口和協(xié)議,使得外部程序能夠通過(guò)這一標(biāo)準(zhǔn)編程接口與任何遵循該協(xié)議的瀏覽器直接進(jìn)行交互,從而繞過(guò)鼠標(biāo)、鍵盤等用戶交互設(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)鍵盤操作記錄器(例如按鍵精靈[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)、拖拽、鍵盤輸入等都可以通過(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)了圖書館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在圖書館潛在的應(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)跟蹤和抓取等等?,F(xiàn)階段,我國(guó)圖書館的業(yè)務(wù)有較大的相似性和類同性,試想如果能夠進(jìn)一步建立一個(gè)全國(guó)范圍的WebDriver自動(dòng)化腳本共享交流平臺(tái),將極大地提高國(guó)內(nèi)圖書館的工作效率和服務(wù)質(zhì)量。

      當(dāng)前的圖書館有不少類似的需要人工去做的重復(fù)性業(yè)務(wù)工作,效率和用戶體驗(yàn)都存在較大的提升空間。本文旨在將WebDriver自動(dòng)化方案介紹給國(guó)內(nèi)廣大同仁,期待能引起廣大圖書館技術(shù)人員對(duì)WebDriver自動(dòng)化技術(shù)的關(guān)注和重視,同時(shí)也希望大家可以舉一反三,思考并嘗試實(shí)現(xiàn)日常業(yè)務(wù)的自動(dòng)化,進(jìn)一步推進(jìn)圖書館服務(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).圖書館電子資源可否瀏覽及下載監(jiān)測(cè)程序設(shè)計(jì)[J].現(xiàn)代圖書情報(bào)技術(shù),2013(11):86-90.

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

      侯志江.圖書館賬號(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.

      福贡县| 贺兰县| 南川市| 西丰县| 舒兰市| 潼南县| 惠来县| 旅游| 南和县| 藁城市| 昂仁县| 涿州市| 印江| 哈尔滨市| 保康县| 武定县| 三江| 托克逊县| 离岛区| 德令哈市| 宣汉县| 安陆市| 广宗县| 天气| 祥云县| 揭东县| 庄河市| 阳泉市| 论坛| 崇左市| 电白县| 遵义县| 县级市| 邻水| 右玉县| 潞西市| 四平市| 旬阳县| 新密市| 中西区| 河间市|