【问题标题】:VBA not filling in by element IDVBA 未按元素 ID 填写
【发布时间】:2020-02-04 13:11:20
【问题描述】:

我的代码有一些问题。 它在 Sharepoint 网站上运行良好——它是我练习和完成工作的虚拟网站;但在工作现场它不工作。 问题是,我有电子邮件,从中获取所有元素并尝试在现场自动填写,但没有任何反应 解析是这样的:

Dim ie As InternetExplorerMedium

Set ie = New InternetExplorerMedium

ie.Visible = True
ie.Navigate2 MarrPlazaWebForm

Do
    DoEvents
Loop Until ie.Busy <> True Or ie.readyState = READYSTATE_COMPLETE

With ie
    .document.getElementById("label-for-pass_date_to").value = dateFrom
    .document.getElementById("label-for-pass_date_from").value = dateTo
    .document.getElementById("label-for-pass_username").value = guestName
    .document.getElementById("label-for-pass_description").value = requestorName
    .document.getElementById("pass_full_day").Checked = True

    Set elems = .document.getElementsByClassName("btn btn-primary")
    For Each e In elems
        If (e.getAttribute("type") = "submit") Then
            e.Click
            Exit For
        End If
    Next e
End With

On Error Resume Next
ie.Quit

网站不通过 id 获取元素,只是将它们留空

带有元素的站点代码如下所示:

<input type="text" id="label-for-pass_date_to" name="pass_date_from" class="form-control js-datepicker-from hasDatepicker" autocomplete="off" placeholder="From" data-datepicker-disabled-date-before="true" data-mask="date">
<input type="text" id="label-for-pass_date_from" name="pass_date_to" class="form-control js-datepicker-to hasDatepicker" autocomplete="off" placeholder="Untill" data-datepicker-disabled-date-before="true" data-mask="date">
<input type="text" id="label-for-pass_username" name="pass_username[0]" class="form-control" placeholder="Name of guest">

等等……

我怀疑,也许工作站点是用 JavaScript 组成的,而所有 ID 都不是我要找的 有什么建议吗?

【问题讨论】:

  • 按 F12 然后检查每个元素
  • 在向文本框填值之前,请尝试添加断点或使用Debug.Print方法检查值(如:dateFrom、dateTo和guestName)是否为空?另外,请尝试使用F12开发者工具检查html资源,确保id属性正确,并验证文本框是否位于IFrame中?
  • 在 VBA 中,所有值都被填写,但在现场 - 没有。使用断点没有帮助 - 它只是告诉我,文本在那里,但它没有。 ID都是复制粘贴的,所以不应该有任何错别字。唯一困扰我的是,在开发人员模式 (F12) 下,该站点仅在我按下文本输入字段时才开始调试。再次 - 它与它有关,但我不确定
  • Ids 看起来不错,可能需要触发某种形式的事件才能接受值。
  • 使用F12开发者工具在IE浏览器中查看html元素时,文本框是否位于IFrame中?是否有一些特殊的容器?

标签: javascript vba internet-explorer web-scraping automation


【解决方案1】:

我终于发现了问题

Dim ie As InternetExplorerMedium - 我使用了“InternetExplorer”,它开始正常工作。

感谢您的建议和回复 - 希望它会派上用场 我还是不明白,为什么会这样 - 可能是因为我公司的一些安全政策

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多