zoukankan      html  css  js  c++  java
  • 《SeleniumBasic 3.141.0.0

    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:SeleniumDrivers"
            .HideCommandPromptWindow = True
        End With
        Set Options = New SeleniumBasic.ChromeOptions
        With Options
            .BinaryLocation = "C:Program Files (x86)GoogleChromeApplicationchrome.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

  • 相关阅读:
    python 通过*.cer *..pfx 获取公钥私钥
    python 交集 并集 差集
    python3 RSA加密、解密、签名
    Go 入门
    ansible入门篇一
    ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)
    数学软件 之 基于MATLAB的DFP算法
    ACM/ICPC 之 最短路径-dijkstra范例(ZOJ2750-POJ1135(ZOJ1298))
    ACM/ICPC 之 判别MST唯一性-Kruskal解法(POJ1679)
    ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/13661128.html
Copyright © 2011-2022 走看看