当前位置: 首页 > 知识库问答 >
问题:

使用VBA在网页上按下按钮

丌官霖
2023-03-14

我正在尝试使用VBA单击网页上的按钮。按钮位于

<div class="search-options-container">
<button class="aui-item aui-button aui-button-subtle search-button"
 type="button" original-title="Search for Issues">
<span class="aui-icon aui-icon-small aui-iconfont-search">Search</span></button>
</div>

到目前为止,我使用的代码是:

Dim ieApp As New SHDocVw.InternetExplorer
Dim ieElement As Object
Dim oHTML_Element As IHTMLElement
...

Do While ieApp.Busy And Not ieApp.readyState = READYSTATE_COMPLETE
    DoEvents
Loop

For Each oHTML_Element In ie.Document.getElementsByName("button")
  Debug.Print ("REACHED")
  If oHTML_Element.className = "aui-item aui-button aui-button-subtle search-button" Then
    oHTML_Element.Click
    End If
Next

这给了我一个对象需要错误。我也尝试使用:

ieElement = ieApp.Document.getElementsByTagName("button")

这也给出了对象所需的错误。

编辑:按照用户Jordan的指示更正了搜索字符串。调试。在使用.getElementsByName查找元素时,Print不会执行,因此可能已经出现错误。脚本已经能够打开页面并在单击按钮之前在搜索框中输入文本。


共有2个答案

沈凡
2023-03-14

这是这类问题的经典例子。

http://vbadud.blogspot.com/2009/08/how-to-login-to-website-using-vba.html

这是所有代码。

Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Sub Login_2_Website()

Dim oHTML_Element As IHTMLElement
Dim sURL As String

On Error GoTo Err_Clear
sURL = "https://www.google.com/accounts/Login"
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.timeout = 60
oBrowser.navigate sURL
oBrowser.Visible = True

Do
' Wait till the Browser is loaded
Loop Until oBrowser.readyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

HTMLDoc.all.Email.Value = "sample@vbadud.com"
HTMLDoc.all.passwd.Value = "*****"

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For
Next

' oBrowser.Refresh ' Refresh If Needed
Err_Clear:
If Err <> 0 Then
Debug.Assert Err = 0
Err.Clear
Resume Next
End If
End Sub
马承
2023-03-14
匿名用户

首先,您要在不存在的索引中搜索元素。在您提供的 html 示例中,没有名为“button”的元素集合。

其次,您在当前代码中搜索的类名是:

"aui-item aui-button-subtle search-button"

然而,在您的html示例中,按钮的类名是:

"aui-item aui-button aui-button-subtle search-button"

尝试将< code>For循环替换为:

ieApp.Document.getElementsbyClassName("aui-item aui-button aui-button-subtle search-button")(0).Click

 类似资料:
  • 我正在尝试从政府网站自动下载表单数月的过程。它要求我登录到我的帐户,然后单击一些按钮继续。出于某种原因,我不想使用IE自动化,因此,我选择通过Excel VBA使用硒来自动化Chrome。我可以登录,但是,登录后我无法单击按钮。到目前为止,我的VBA代码如下 - 在此之后,我想单击一个按钮,该按钮的HTML是 请注意,还有其他按钮具有相同的类。请指导我如何单击此按钮?

  • 我对Selenium是新手,我正在尝试使用Chrome在这个网页上自动完成登录任务。我已经成功地找到并发送了电子邮件和密码字段的密钥。但是,我无法单击“登录”按钮。 检查元素产生以下结果, 我试过使用 由于没有名称字段,因此产生了一个错误。我发现这可以使用XPath或css选择器来完成。 请告知

  • 我正在使用javascript(extensions chrome)在程序“Atom”中制作一个机器人,并希望点击按钮“添加到购物车”。我的html是。我猜我在使用值时需要这样做。怎么做?

  • 不含硒 我需要点击一个网页上的按钮。有可能与请求有关吗?我不想用硒。 提前道谢!

  • 我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的

  • 问题内容: 我有一个“保存”按钮,我想与软键盘一起向上推。因此,当用户单击我的布局中的EditText时,按钮必须保持在键盘上方。现在,该按钮将隐藏在键盘下方。你怎么做到这一点? 提前致谢! 问题答案: 您需要将键盘的输入模式设置为。您可以这样做,将以下行添加到清单中您的活动属性中: 这是在活动中添加的属性的示例: