IHTMLDocument -- 按 ID 而不是名称单击 IHTMLElement

本文关键字:单击 IHTMLElement ID IHTMLDocument | 更新日期: 2023-09-27 18:36:33

我需要填写的输入字段的名称值设置为 j_password。 我想点击的按钮是div 中的一个链接,其 id 设置为 loginBtn。

我正在尝试这样的事情:

mshtml.IHTMLDocument2 doc = ((mshtml.IHTMLDocument2)webBrowserControl.Document);
((mshtml.IHTMLElement)doc.all.item("j_password")).setAttribute("value", password);
((mshtml.IHTMLElement)doc.all.item("loginBtn")).click();

但该按钮永远不会被点击。 我无法判断是因为它不是真正的按钮,还是因为它没有 name 属性并且我正在尝试使用 id。

无论如何,有人看到解决这个问题的方法吗?

IHTMLDocument -- 按 ID 而不是名称单击 IHTMLElement

如果单击调用未引发 NullReferenceException,则您找到了该元素。但最好使用标准的IHTMLDocument3::getElementById orIHTMLDocument3::getElementsByName而不是document.all。

至于为什么点击不起作用,这取决于点击应该如何工作。鼠标单击有很多副作用,如果鼠标不在鼠标按下和鼠标向上之间的元素上,浏览器可能会限制这些效果。

如果点击应该调用javascript函数,只需直接调用该函数(ExecScript)。否则,找到登录表单元素,调用其 onsubmit 处理程序函数(如果有),然后调用其提交方法。