0

我对此一无所知。

我正在处理的项目的一部分需要与 HTML 表单交互,以在基于 Web 的外部工具上显示正确的页面。我已经设法让这个表单接受输入的变量并使用 document.write 动态生成,但我无法可靠地以不会抛出错误 91 的方式触发“提交”操作.

到目前为止,我一直在使用一个简单的 getelementbyid.click 调用......这是我试图让它触发的一些事情的列表:

TestLoop:
   Pause (1)
   BrowserControl.document.getelementbyid("Submit").click
   On Error Goto TestLoop

*(“错误循环”策略根本不起作用。)

   Pause (3)
   BrowserControl.document.getelementbyid("Submit").click

(这实际上效果最好,但是由于不同的 PC 可能具有不同的硬件规格和可能会减慢速度的开放应用程序,所以对我有用的方法对其他测试人员不起作用。如果我让它太长,我最终会添加额外的延迟到我已经担心太慢的表格。)

<script type="text/javascript">
    window.onload = function(){
     document.getElementById('Submit').click();;
    }
</script>

(在生成的 HTML 中嵌入自动触发器,令人沮丧的是,它在嵌入式 Web 浏览器控件的外部工作,但在它内部不起作用。)

Private Sub wb_NavigateComplete2(ByVal pDisp As Object, URL As Variant)

 If Me.BrowserControl.Document.URL= "about:blank" Then
        BrowserControl.document.getelementbyid("Submit").click
 End If
End Sub

(出于某种疯狂的原因,使用 debug.print 我发现它说导航在它实际完成之前就已经完成了,所以这根本不起作用。)

我可能错过了一些......我一直在从不同的角度攻击这个。诀窍是我必须使用 HTML 表单与我没有管理员权限的系统进行交互,因此更改接收信息的方式并不是一个真正的选择。

我最后的想法是看看我是否可以使用直接的 VB 模拟 FORM 提交,绕过对“单击”事件的需要,但是要搜索与 Access 2007 Forms 的 HTML FORM 交互相关的内容非常困难。:P

任何帮助将不胜感激!

4

1 回答 1

0

好吧,经过 7 个月的测试和在那段时间的数千次激活之后,拆分“工作”似乎已经成功了。

Form_Open:初始化浏览器对象并将其地址设置为 about:blank

Form_Current:调用一个公式,使用 Document.Write“绘制”Web 表单,然后进入循环...

TestLoop:
   BrowserControl.document.getelementbyid("Submit").click
   On Error Goto TestLoop
于 2014-02-28T16:54:04.310 回答