VBA 自动化的 Internet Explorer 替代方案

Posted

技术标签:

【中文标题】VBA 自动化的 Internet Explorer 替代方案【英文标题】:Internet Explorer alternative for VBA automation 【发布时间】:2021-07-15 10:02:53 【问题描述】:

我有一个 VBA 代码来浏览网页、阅读内容、单击按钮、填写文本等...此代码使用 Internet Explorer。下面我没有复制代码,只是把我使用的主要对象给你一个想法:

Dim htmlDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim oHTML_Element As IHTMLElement


Set ie = CreateObject("InternetExplorer.Application")
ie.navigate Url
ie.Visible = True

...

Set oBrowser = ie
oBrowser.Visible = True

...    
Set HTMLDoc = oBrowser.document

Set nodeAllDiv = HTMLDoc.getElementsByTagName("p")

Txt = nodeAllDiv.Item(0).innerText

..

HTMLDoc.getElementsByTagName("p").Item(nodeAllDiv.Length - 1).Click

Set listButtons = HTMLDoc.getElementsByTagName("button")
listButtons.Item(0).Click


Set formDivs = HTMLDoc.getElementsByTagName("form")

问题是最近我正在浏览的网页不再受 Internet Explorer 支持,而是使用 Chrome 或 Edge,因此我无法按原样使用此 VBA 代码。

有没有一种方法可以重用我到目前为止所写的内容(重用相同的对象等......)?如果可能,无需迁移到其他框架/语言

谢谢

【问题讨论】:

网站是公开的吗? 我认为 3LexW 的回答是正确的。根据您的描述,SeleniumBasic 是最好的选择,您可以将它与 Chrome 一起使用。但是你必须改变你的代码。 SeleniumBasic 的代码示例也可以参考GitHub repo。 该网站不公开。我认为微软至少可以让 Edge 用于我的代码。 SeleniumBasic 学习起来并不难,你仍然可以使用 VBA。 Edge 不支持 VBA 中使用的 COM 自动化接口(InternetExplorer 对象)。 我只是想我无法安装 Selenium,我的公司确实禁止从 github 安装任何东西 【参考方案1】:

Seleniumbasic 是一个用于 VBA 环境的 Web 自动化包,您可能想看看。

Github repo of Seleniumbasic

【讨论】:

谢谢,你的意思是我不能像为其他浏览器创建的那样重用对象吗? 对于 selenium,定位元素的操作非常容易学习,并且文档编写得很好。不幸的是,您可能需要一些时间来修改您的代码,但学习和迁移在 IMO 中并不难,因为它们非常相似。

以上是关于VBA 自动化的 Internet Explorer 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA(没有 Internet Explorer)下载文件

VBA仅使用Onlick单击Internet Explorer [关闭]

VBA研究操作InternetExplorer控件取数据

eclipse中package explore和project explore 怎么相互切换???

VBA是啥语言?

HackTheBox - Explore