doi:10.3969/J.ISSN.1672-7274.2025.06.024
中圖分類號:TP31 文獻標(biāo)志碼:A
Exploration and Development ofWeb Page Automation Based on Selenium Open Source Library
LIU Bo (China Mobile Online Marketing Service Center Jiangxi Branch, Nanchang 3302oo, China)
Abstract: The article introduces the basic concept of RPA (Robotic Process Automation) automation and explores the development capabilities of Web automation processes using selenium open-source libraries on Windows and domestic systems (Kirin,UniTrust).
Keywords:software development; RPA; processautomation; selenium
0 引言
RPA(RoboticProcessAutomation)是一種以軟件機器人及人工智能為基礎(chǔ)的業(yè)務(wù)過程自動化科技。它依據(jù)預(yù)先設(shè)定好的程序與現(xiàn)有系統(tǒng)進行交互,并完成預(yù)期的任務(wù)。RPA軟件能夠捕捉并模擬我們?nèi)粘5逆I盤、鼠標(biāo)操作等人機交互行為,如識別、觸發(fā)、通信、文本生成等任務(wù),從而自動執(zhí)行重復(fù)性的業(yè)務(wù)流程,RPA的優(yōu)點包括減少人工錯誤、增強準(zhǔn)確性、提高生產(chǎn)效率并降低成本,它能夠執(zhí)行大量重復(fù)的、基于規(guī)則的工作流程任務(wù)。RPA應(yīng)用領(lǐng)域包括財務(wù)會計、人力資源、采購、供應(yīng)鏈管理等,如費用報銷、單據(jù)審核、人員入職、開具證明、訂單核對等流程。
分析目前市面上的RPA解決方案,從部署開發(fā)模式來說,一般是RPA設(shè)計器、RPA機器人運行客戶端、RPA機器人服務(wù)端。RPA設(shè)計器一般來說具有可視化的軟件圖形操作界面,在該軟件工具上設(shè)計流程后,配置在客戶端自動化軟件上運行,便可以模擬人類在軟件系統(tǒng)中交互的動作來執(zhí)行業(yè)務(wù)流程。設(shè)計業(yè)務(wù)流程時,用已有的自動化操作組件搭建設(shè)計自動化流程,可以使用鼠標(biāo)拉拽能力組件,編排設(shè)計出各種自動化的業(yè)務(wù)流程。對于復(fù)雜的業(yè)務(wù)邏輯,可嵌入腳本如python處理或者使用RPA設(shè)計器內(nèi)置規(guī)定的語言開發(fā)處理。
RPA機器人服務(wù)端則是用來管控部署調(diào)度各個RPA機器人運行客戶端,比如,運行的觸發(fā)方式控制、部署方式云端還是本機、操作運行方式是有人值守還是無人值守、狀態(tài)監(jiān)控及操作控制等。同時進行全流程管控,如需求管理、功能測試上線、用戶驗收等。
RPA機器人運行客戶端則是部署在實際生產(chǎn)終端上,加載運行設(shè)計器開發(fā)制定好的自動化流程,根據(jù)RPA機器人服務(wù)端調(diào)度處理業(yè)務(wù)。
費用方面需要購買RPA軟件許可證費用和RPA設(shè)計器相關(guān)費用。從開發(fā)使用體驗來講,稍微復(fù)雜的生產(chǎn)流程場景僅靠同的組件鼠標(biāo)拖拉拽是幾乎無法完成,都需具備開發(fā)技能的人員使用RPA工具內(nèi)特定的開發(fā)語言或者相關(guān)腳本進行編程開發(fā),造成使用門檻較高,且開發(fā)體驗較差效率降低。
企業(yè)內(nèi)部應(yīng)用如果部署使用的是基于瀏覽器的B/S應(yīng)用要實現(xiàn)Web瀏覽器自動化生產(chǎn)應(yīng)用,想節(jié)省費用,同時想提升開發(fā)效率進行輕量級開發(fā),經(jīng)過探索分析,可采用selenuium開源庫結(jié)合目前的流行開發(fā)語言開發(fā)實現(xiàn)Web頁面自動化流程,selenium原本用于Web自動化測試化,可運行在各種類型的瀏覽器中,目前穩(wěn)定版本為selenium3.0,可結(jié)合實現(xiàn)RPA類似功能,在Web瀏覽器的應(yīng)用系統(tǒng)上解決并執(zhí)行大量重復(fù)的、基于規(guī)則的工作流程任務(wù),同時也節(jié)省相關(guān)RPA解決方案購買費用,開發(fā)體驗良好效率更高。
基于以上,具備開發(fā)技能的人員可以使用開源框架SeleniumWebDriver,編寫模仿用戶操作的操作流程腳本命令(java編寫),WebDrvier根據(jù)瀏覽器驅(qū)動直接調(diào)用Web瀏覽器,瀏覽器執(zhí)行操作流程腳本,流程直接運行在瀏覽器中。實現(xiàn)瀏覽器自動化操作達到RPA自動化流程。從原理來說,RPA解決方案提供商也是采用了類似的開源框架,然后采用PYTHON或者C#等高級編程語言封裝開發(fā)。也可以達到RPA軟件相同效果,且開發(fā)自由度更大更靈活,開發(fā)效率更高。
下面分別介紹下Windows和國產(chǎn)系統(tǒng)下如何快速搭建基于SeleniumWeb瀏覽器自動化開發(fā)。
1 Windows環(huán)境下進行SeleniumWeb自動化開發(fā)
1.1開發(fā)環(huán)境搭建
條件具備下,最好是Windows11環(huán)境,這以谷歌瀏覽器為例,需安裝googlechrome瀏覽器,版本范圍為V82-V96(版本太新不支持,同時需禁止chrome自動升級),開發(fā)工具為VS.net2022,開發(fā)項目:C#+ winform開發(fā),使用NuGet安裝Selenium相關(guān)庫文件,輸入selenium,查詢后安裝selenium.support、selenium.WebDriver,如圖1所示。
1.2啟動Web瀏覽器方式
這里有兩種模式,一個是用代碼啟動瀏覽器,另外一個先啟動瀏覽器,然后再通過代碼開發(fā)連接它實現(xiàn)自動化。
1.2.1代碼啟動瀏覽器
IWebDriver driver Σ=Σ new OpenQA.Selenium. Chrome.ChromeDriver;
//初始化谷歌瀏覽器對象,獲取到可以控制進行各種瀏覽器操作。
//如自動打開一個連接網(wǎng)址driver.Navigate.GoToUrl(“要打開的網(wǎng)址”);
1.2.2先手工啟動谷歌瀏覽器,再用代碼連接
先建立一個臨時目錄如e:\temp,然后建立谷歌瀏覽器的運行模式,端口為9222距離,用以下命令行啟動谷歌瀏覽器:
chrome.exe --remote-debugging-por t=9222 --user-data-dir \"E:\temp\"
然后通過代碼連接端口之后就可以控制此瀏覽器:
public IWebDriver selenium;
ChromeOptions options Σ=Σ new ChromeOptions;
options.DebuggerAddress O= \"127.0.0.1:9222\";
selenium Σ= new ChromeDriver(options);
連接到了瀏覽器,就可以進行尋找按鈕、文本等元素進行操作了。
(1)首先要看元素是不是在iframe里面,如果在,需要切換。
var framel Σ=Σ selenium.FindElement(By. XPath(\"/html/body/div[3]/iframe\"));
selenium.SwitchTo.Frame(framel);
(2)切換回來。
selenium.SwitchTo.DefaultContent;
(3)元素定位。
WebDriver對象的FindElement函數(shù)可用于定位一個頁面元素,可以根據(jù)id、name、Class、xpath、css方式、jQurey等方式定位,這里舉例xpath方式定位(其他定位方式詳情參考相關(guān)資料)。
如獲取文本框里面的值,一般采用xpath定位,在谷歌瀏覽器,F(xiàn)12打開調(diào)試模式,鼠標(biāo)定位到需要定位的ui元素,右鍵,選擇CopyXpath,復(fù)制此原元素的xpath路徑。
var startime Σ=Σ selenium.FindElement(By. XPath(\"/html/body/div[1]/input\"));
System.Threading.Thread.Sleep(500);
然后獲取里面的內(nèi)容startime.GetAttribute(\"value\")
(4)按鈕點擊。
var findbutton τ=τ selenium.FindElement(By. XPath(\"/html/body/div[1]/div[2]/a\"));
System.Threading.Thread.Sleep(500);
findbutton.Click;
由于是操作Web頁面,打開頁面可能會因為網(wǎng)絡(luò)和系統(tǒng)加載問題會延時,如果此時去獲取元素頁面還沒打開,Web頁面元素會無法定位造成報錯失敗,所以每一步都需要加入延時操作。這里只是拋磚引玉,其他元素定位方法請參考相關(guān)文獻[]。
2國產(chǎn)系統(tǒng)環(huán)境下進行SeleniumWeb自動化開發(fā)
2.1開發(fā)環(huán)境搭建
這里介紹采用JDK1.8+selenium庫開發(fā)JAVAconsole工程實現(xiàn)(有條件開發(fā)JAVAUI界面,也可以用PYTHON,QT開發(fā))。開發(fā)工具IntelliJIDEA2022。
(1)在PC上安裝jdk1.8版本(具體安裝部署可參考相關(guān)資料)。
(2)準(zhǔn)備谷歌瀏覽器安裝(版本推薦V82-V96之間),安裝后,以麒麟系統(tǒng)為例,一般安裝在/opt/google/chrome目錄下。
(3)下載同版本的瀏覽器驅(qū)動文件chromedriver,放在/opt/google/chrome目錄下。
(4)新建javaconcole工程,pom.xml文件如下: org.seleniumhq.selenium selenium-java 3.141.59 org.seleniumhq.selenium selenium-api 3.141.59 org.seleniumhq.selenium selenium-chrome-driver 3.141.59
2.2啟動Web瀏覽器方式
打開終端,建立臨時目錄如/home/rpa/temp,輸入以下命令:
/opt/google/chrome/chrome --remote-debuggingport =9222 --user-data-dir =′ /home/rpa/temp/\"
然后通過代碼連接獲取到ChromeDriver進行瀏覽器各種操作,更加靈活。
System.setProperty(\"webdriver.chrome.driver\" \"/opt/google/chrome/chromedriver\");
ChromeOptions option Σ= new ChromeOptions;
option.setExperimentalOption(\"debuggerAddre ss\", \"127.0.0.1:9222\");
ChromeDriver driver Σ=Σ newChromeDriver (option);
System.out.println(\"已經(jīng)定位到\" + driver. getTitle;
元素界面定位方法和前面類似。
3 其他注意事項
3.1定位元素經(jīng)常定位不到
一般有以下原因:Web頁面元素變化了導(dǎo)致xpath路徑變化、頁面由于網(wǎng)絡(luò)原因還沒加載出來定位找不到。第一種需要重新分析頁面元素,第二種原因可使用以下方法:
3.1.1顯示等待方式來判斷頁面元素是否存在
//這里以java為例,設(shè)定觸發(fā)條件的最長等待時間為3秒,
WebDriverWaitwait Σ=Σ newWebDriverWait (driver, 3);
//判斷指定元素是否在頁面中等待3秒,如果超過3秒,則拋出異常
Wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath( id=\\"istContainer\\"]/div/div[2]/div[2]/span[1]\")));
或者加入延遲語句,等待元素加載出來再進行定位獲取。
3.1.2頁面元素明明在頁面存在但是無法定位
需要進行滾動條操作,將擋住的頁面元素顯示出來,再定位獲取此UI元素??蓞⒖枷嚓P(guān)文獻[1]。
4 結(jié)束語
綜上所述,使用合適的開發(fā)編程語言再結(jié)合selenium開源庫可實現(xiàn)Web瀏覽器自動化操作實現(xiàn)RPA類似功能,開發(fā)過程不再局限且更加靈活更加高效,也可以節(jié)省相關(guān)購買RPA軟件費用。
參考文獻
[1]吳曉華,俞美玲SeleniumWebDriver3實戰(zhàn)寶典(java版).北京:電子工業(yè)出版社,2019.