首页 > 解决方案 > 如何访问 ASPX 菜单页面中的 HTML 元素?

问题描述

我正在尝试提交表单详细信息。我无法分享 HTML 详细信息,因此尝试在下面解释。

我有一个菜单控制页面https://www.abcmenu.aspxhttps://www.abc-employee.aspx此页面使用调用 url javascript:void(0),当我单击员工菜单项时,它会在同一页面中显示一个表单。

但是,页面不会刷新,也不会加载另一个页面,地址栏中的 URL 保持不变。

这是该网站的示例视图:

网站表格截图

我需要填写表单详细信息并点击提交按钮。

下面的代码给出了运行时错误说明需要的对象。

Set htmldoc = ie.document

Dim emp as mshtml.ihtmlinputelement
Set emp = htmldoc.getelementbyid("fld_emp")
emp.value = 357690

Dim subm as mshtml.ihtmlelememt
Set subm = htmldoc.getelementbyid("btnk_sub")
Subm.click

我尝试了debug.print表单标签下的所有元素,但它不返回表单中的元素。

当我执行代码时,它只返回主菜单页面的详细信息,而不是表单元素。

这是我尝试打印 HTML 元素的代码

Dim htmla as mshtml.ihtmlelement 

Dim htmlas as mshtml.ihtmlelementcollection 

For each htmla in htmlas
    Debug.print htmla.innertext
Next htmla

为什么我无法访问在主菜单页面中打开的表单中的 HTML 元素?

页面元素结构

标签: vbaformsinternet-explorerweb-scraping

解决方案


如果您尝试使用 VBA 访问 ASP.Net 网页上的 iframe 元素,那么您可以参考下面的示例可能会帮助您解决问题。

Sub demo()
 
    Dim URL As String
    Dim IE As Object
   
    Set IE = CreateObject("InternetExplorer.Application")
   
    IE.Visible = True
    
    URL = "https://example.com"
 
    IE.navigate URL
    
    Do While IE.readyState = 4: DoEvents: Loop
    Do Until IE.readyState = 4: DoEvents: Loop
 
    Dim elemCollection As IHTMLElementCollection
    
    Debug.Print (IE.document.getElementsByTagName("iframe")(0).contentDocument.getElementsByName("fname")(0).Value)
    
    Set IE = Nothing
End Sub

输出:

在此处输入图像描述


推荐阅读