【发布时间】:2020-12-06 07:49:11
【问题描述】:
我正在尝试自动输入会员预订系统。我需要在一个字段中输入一个名称,该字段附加了一个查找。
例如,我将 Smith 输入到字段中,所有以 Smith 开头的成员都会出现并允许我单击其中一个。
所以,我得到了表单,可以获取所有手动输入的值,但我不知道如何与字段本身交互以输入新值。
Set elements = ie.document.getElementsByTagName("input")
Debug.Print "7 - " & elements(7).Name & " : " & elements(7).Value
Debug.Print "8 - " & elements(8).Name & " : " & elements(8).Value
Debug.Print "9 - " & elements(9).Name & " : " & elements(9).Value
Debug.Print "10 - " & elements(10).Name & " : " & elements(10).Value
给我以下内容:
7 - Player1Name : Guegan, Mr Julian 8 - Player1ID:1485741 9 - Player2Name: 10 - Player2ID:我想输入 Player2Name 并让网页执行查找。
我尝试设置elements(9).Value 和/或elements(10).Value,但页面忽略了它。我什至尝试过使用 Sendkeys,但没有成功。
【问题讨论】:
-
我会强烈建议不要使用 VBA 自动化 Internet Explorer 来完成这项任务。第一种选择是将数据直接放入数据库。如果这不是一个选项,我会尝试找出此表单发送的 HTTP 请求,并复制这些请求,而不是尝试使浏览器自动化。如果这也不是一个选项,我会尝试将已建立的浏览器自动化框架(例如 Selenium)与现代浏览器一起使用。最后一个选项是最复杂的,所以我真的会尽量避免它。
-
此外,您如何以可靠的方式自动“从动态生成的列表中挑选用户”?当您输入“Smith”时,会弹出十个名字,您的代码如何知道哪个是正确的?
-
谢谢。它不是直接输入数据库的选项,也不是复制 HTTP 请求的选项,所以我需要使用 Selenium,我很高兴花时间弄清楚,但我会遇到同样的问题无法输入隐藏字段。?
-
这很有趣 - 为什么不能选择复制 HTTP 请求?
-
主要是编码无知...
标签: vba internet-explorer automation