【问题标题】:VBA getElementById doesn't work for buttonVBA getElementById 不适用于按钮
【发布时间】:2015-09-20 23:58:47
【问题描述】:

我正在尝试访问一个网站,在文本框中输入一个值,然后单击搜索按钮来搜索我的值。 我的问题是,我无法获取按钮元素来触发点击事件。

VBA:

Dim i As Long
Dim objElement As Object
Dim objCollection As Object
 Dim result(2) As String
Dim timeout As Integer

Dim test As Object 'testweise

If IE Is Nothing = False Then
    IE.Quit
End If
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True


Start:

' Send the form data To URL As POST binary request
IE.navigate "https://www.bundesanzeiger.de/ebanzwww/wexsservlet"

' Wait while IE loading...
Do While IE.Busy
    DoEvents
    Application.Wait DateAdd("s", 1, Now)
Loop
IE.Document.getElementbyid("genericsearch_param.fulltext").Value = "Mielke"
IE.Document.getElementbyid("(page.navid=to_quicksearchlist)").Click

HTML

<div class="bbg"><input name="(page.navid=to_quicksearchlist)" type="submit" alt="Suchen" value="Suchen"></div>

第二个 getElement 调用应该获取按钮,但对象为 null。 有谁知道我哪里做错了?

【问题讨论】:

    标签: html vba getelementbyid


    【解决方案1】:

    替换:

    IE.Document.getElementbyid("(page.navid=to_quicksearchlist)").Click
    

    与:

    Set x = IE.Document.GetElementsByName("(page.navid=to_quicksearchlist)")
    x(0).Click
    

    您需要通过 Name 而不是 Id

    来查找元素

    【讨论】:

    • 我收到一条错误消息:“此对象不支持这种方法”(德语错误消息的翻译)
    • 非常感谢!这就是解决方案!
    【解决方案2】:

    您正在使用getElementById,它会查找元素的id

    您的输入按钮没有设置任何id 属性,这就是您找不到它的原因。

    id 属性添加一个值,你会看到它工作:

    <input id="xyz" ... />
    

    然后:

    IE.Document.getElementbyid("xyz").Click
    

    【讨论】:

    • getElementById 应该搜索 Id AND Name,至少 MSDN 是这么说的: getElementById 返回对具有指定 ID 或 NAME 属性值的第一个对象的引用。这是链接:msdn.microsoft.com/en-us/library/ms535862(v=vs.85).aspx
    • @Eych 你在使用 IE8+ 吗?来自 MSDN 上的文档:Windows Internet Explorer 8 及更高版本。在 IE8 标准模式下,getElementById 仅对 ID 属性执行区分大小写的匹配。。见这里:msdn.microsoft.com/en-us/library/ms536437%28v=vs.85%29.aspx。请尝试我的代码,看看它会解决你的问题
    • 好的,我明白了。这可能是问题所在。我不能尝试你的代码,因为我不能添加任何属性,因为我不是所有者。我需要一个函数来搜索我已经编写的名称,但是当我尝试使用 .Click 事件时它给了我一个错误。
    • 在这种情况下,您需要使用getElementsByName,它返回一个元素集合(其中可能只有一项)。查看 AnalystCave.com 提供的答案,其中显示了使用该方法的解决方案。适当的 MSDN 文章(也可能对您有所帮助)是 msdn.microsoft.com/en-us/library/ms536438%28v=vs.85%29.aspx。希望有帮助
    • 我已经尝试过他的解决方案,但我收到错误 91:“未设置对象变量或块变量”。顺便说一句,感谢到目前为止的帮助!
    猜你喜欢
    • 2016-08-07
    • 1970-01-01
    • 2014-12-29
    • 2014-12-17
    • 1970-01-01
    • 2018-02-25
    • 2017-12-17
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多