【问题标题】:VBA Input to Hidden Input field that has a Lookup具有查找的隐藏输入字段的 VBA 输入
【发布时间】: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


【解决方案1】:

cmets 中提到的答案是触发 change 事件,然后触发并检索一些隐藏信息(用户 ID 等)并提交到数据库。

【讨论】:

    【解决方案2】:

    对于查找字段,请尝试设置用户可以从填充选项中选择的确切值。之后尝试触发该元素的更改事件。

    对于隐藏字段,首先尝试将字段类型更改为“文本”并设置值。在那次触发之后,元素的更改事件可能会帮助您正确分配值。

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 2023-03-12
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多