《SeleniumBasic 3.141.0.0 - 在VBA中操作瀏覽器》系列文章之一:SeleniumBasic的下載和部署


Selenium是一種非常流行的瀏覽器和網頁自動化技術,開發人員可以使用C#、Java、Python等語言來操作Chrome、Firefox等瀏覽器。

VBA語言可以直接操作訪問Microsoft Internet Explorer(IE)瀏覽器,但是IE瀏覽器的問題很多,最近不再受歡迎。

Chrome等瀏覽器有着速度快等優勢,使用群體非常多。習慣用VBA編程的人們如何自動操作IE以外的瀏覽器呢?

在網上可以找到一個SeleniumBasic v2.0.9.0的軟件,作者是Florent BREHERET。在電腦中安裝了該軟件后,可以在VBA、VBS、VB6等Basic系列的語言中調用Selenium的功能。

然而,在很多電腦上會出現“無法創建對象”、“自動化錯誤”等異常,再加上這個軟件一直沒更新,於是最近我自己從頭開發了SeleniumBasic 3.141.0.0,以下簡稱V3

在該系列文章中我會陸續講解工具的部署、Selenium環境的搭建、使用VBA操作瀏覽器的基本語法、Selenium中高級技巧等知識。

友情提示:Selenium是一項繁瑣而強大的技術,如果你沒足夠的耐心,請繞道,以免浪費您的時間。

SeleniumBasic 3.141.0.0

  • 支持的編程語言:VBA、VB6、VBS等。同時支持32和64位VBA。
  • 支持的瀏覽器:Chrome、Firefox、Microsoft Edge、Internet Explorer、Opera、Safari、QQ和360等瀏覽器。
  • 主要功能:創建瀏覽器、定位元素、窗口和框架切換等最常用功能。
  • 適用人群:熟悉VBA方面的語言,有Selenium部署和開發經驗更佳。

接下來講一下V3的構成和部署方法。

下載途徑1:SeleniumBasic.zip

下載途徑2:https://share.weiyun.com/5dpcNqx

在Tools文件夾里面找到我分享的SeleniumBasic.zip.選中並下載它

 

 下載並解壓到方便找到的本地文件夾中(別放在桌面)。

 會看到7個文件,功能如下:

  • SeleniumBasic.dll和SeleniumBasic.tlb:這兩個是類型庫,提供了VBA環境中用到的SeleniumBasic命名空間中的對象、成員。在VBA工程中需要添加引用SeleniumBasic.tlb。
  • RegAsm.bat:用於注冊dll,因為釋放到你電腦以后,只是把文件放到磁盤上了,要讓dll和tlb發揮作用,還需要向注冊表中寫入內容。因此需要用管理員權限運行該bat文件。
  • UnRegAsm.bat:反注冊。當你不再需要V3時,用管理員權限運行這個bat,可以從注冊表中移除寫入的內容。相當於軟件的卸載。
  • WebDriver.dll和WebDriver.Support.dll:.NET語言所需的動態鏈接庫,V3也依賴這兩個庫,因此也是必需的。

接下來進行實際操作。

  • 第一步:選中regasm.bat,右鍵菜單選中以管理員身份運行。稍后彈出一個黑色窗口,提示注冊成功。

  

  • 第二步:VBA中添加引用

啟動Excel或其他Office組件,打開VBA編程環境,點擊菜單“工具/引用”,在引用對話框中點擊“瀏覽”。

  

 彈出的選擇文件對話框中,過濾器換成“所有文件”,找到前文所述的SeleniumBasic.tlb,打開。

 

 這樣,引用中就出現了一條SeleniumBasic

 VBA中按下F2,對象瀏覽器中切換到SeleniumBasic,可以看到很多類型和方法。

 

 

這里的類看起來有些多,剛開始可以先從如下2個主要對象開始學起。

  • IWebDriver:瀏覽器對象
  • IWebElement:網頁元素對象

如果你的電腦中Chrome瀏覽器及其驅動文件已經配置的很好了,環境變量也設置好了,那么可以用如下十來行代碼就可以把谷歌瀏覽器啟動起來。

Private WD As SeleniumBasic.IWebDriver
Sub Baidu()
    On Error GoTo Err1    
    Set WD = New SeleniumBasic.IWebDriver    
    WD.New_ChromeDriver
    WD.URL = "https://www.baidu.com"
    MsgBox "下面退出瀏覽器。"
    WD.Quit
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

實際上,Selenium啟動瀏覽器之前,可以設置瀏覽器和驅動屬性,詳細代碼為:

Private WD As SeleniumBasic.IWebDriver
Sub Baidu()
    On Error GoTo Err1
    Dim Service As SeleniumBasic.ChromeDriverService
    Dim Options As SeleniumBasic.ChromeOptions
    Set WD = New SeleniumBasic.IWebDriver
    Set Service = New SeleniumBasic.ChromeDriverService
    With Service
        .CreateDefaultService driverPath:="E:\Selenium\Drivers"
        .HideCommandPromptWindow = True
    End With
    Set Options = New SeleniumBasic.ChromeOptions
    With Options
        .BinaryLocation = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
        '.AddExcludedArgument "enable-automation"
        '.AddArgument "--start-maximized"
        '.DebuggerAddress = "127.0.0.1:9999" '不要與其他幾個混用
    End With
    WD.New_ChromeDriver Service:=Service, Options:=Options
    WD.URL = "https://www.baidu.com"
    Dim form As SeleniumBasic.IWebElement
    Dim keyword As SeleniumBasic.IWebElement
    Dim button As SeleniumBasic.IWebElement
    Set form = WD.FindElementById("form")
    Set keyword = form.FindElementById("kw")
    Set button = form.FindElementById("su")
    button.Click
    Debug.Print WD.Title, WD.URL
    Debug.Print WD.PageSource
    MsgBox "下面退出瀏覽器。"
    WD.Quit
    Exit Sub
Err1:
    MsgBox Err.Description, vbCritical
End Sub

對於尚未安裝瀏覽器,尚未下載驅動文件的同學,可以繼續學習下一節。

學習交流與資料下載:SeleniumBasic 3.141.0.0的QQ群324399884


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM