vba - 如何访问 ASPX 菜单页面中的 HTML 元素?
问题描述
我正在尝试提交表单详细信息。我无法分享 HTML 详细信息,因此尝试在下面解释。
我有一个菜单控制页面https://www.abcmenu.aspx
。https://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 元素?
解决方案
如果您尝试使用 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
输出:
推荐阅读
- postgresql - 分区表 - 是否不需要在分区列上添加索引?
- react-native - TouchableOpacity / Pressable 即使位置相对React Native,也不能在绝对位置的视图上工作
- sql - 如何使用 T-SQL 每 N 行选择 N 行?
- blockchain - 获取特定区块的交易(ERC-20 代币)
- html - 如何在电子邮件链接中使用带有空格的主题行
- ruby - Ruby 中的标识方法工厂
- python - 使用 Playwright for Python 刷新 cookie
- jquery - 如何在 Jquery 中使用循环在另一个输入中显示输入值?
- ios - [Ionic-3][iOS] 收到警告 [一般] 'NSKeyedUnarchiveFromData' 不应用于取消归档,将在未来版本中删除
- oracle - 如何捕获触发器内部的错误