在web浏览器中输入标签InvokeMember("Click")没有触发onclick事件
本文关键字:quot 事件 onclick Click web 标签 输入 InvokeMember 浏览器 | 更新日期: 2023-09-27 18:03:01
我正在使用Dotnet Web浏览器单击输入元素-按钮。当这个click事件被触发时,它执行一个JS函数,该函数使用Google Recaptcher生成captcha,其来源看起来像Recaptcha链接。现在的问题是,我无法触发onClick事件,我使用以下代码:
HtmlElementCollection inputColl = HTMLDoc.GetElementsByTagName("input");
foreach (HtmlElement inputTag in inputColl)
{
string valueAttribute = inputTag.GetAttribute("value");
if (valueAttribute.ToLower() == "sign up")
{
inputTag.Focus();
inputTag.InvokeMember("Click");
break;
}
}
我已经检查了一切,我正在捕捉正确的按钮,但不知道为什么onClick事件没有被解雇。
- 添加对Microsoft.mshtml的引用
看下面的固定示例:
HtmlElementCollection inputColl = HTMLDoc.GetElementsByTagName("input"); foreach (HtmlElement inputTag in inputColl) { string valueAttribute = inputTag.GetAttribute("value"); if (valueAttribute.ToLower() == "sign up") { inputTag.Focus(); IHTMLElement nativeElement = el.DomElement as IHTMLElement; nativeElement.click(); break; } }
这肯定可以工作。我在包含onclick事件的锚和div上测试了它。
HtmlElementCollection inputColl = HTMLDoc.GetElementsByTagName("input");
foreach (HtmlElement inputTag in inputColl)
{
string valueAttribute = inputTag.GetAttribute("value");
if (valueAttribute.ToLower() == "sign up")
{
obj = inputTag.DomElement;
mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
}
}
我无法打开链接查看代码,因此我没有专门针对您的情况进行尝试。无论如何,如果这不起作用,可能TAG容器被插入到表单中,在这种情况下,您必须触发表单的提交事件,而不是触发对sorm提交按钮的单击。
无论如何,如果你将"click"调用为小写,可能你的代码也会工作得很好(我真的没有验证,只是猜测,在c#中没有关系!)
PS:请参阅web浏览器:排序活动时没有DocumentCompleted是由托管网页上的一些有趣的侧代码为您的情况下的链接触发,希望它能帮助,并可能有人帮助我返回!
你确定"Click"是正确的名字吗?我有一些几乎相同的代码,做完全相同的事情,属性名称是"onclick"。再看一下这个页面的HTML。
foreach (HtmlElement element in col)
{
if (element.GetAttribute(attribute).Equals(attName))
{
// Invoke the "Click" member of the button
element.InvokeMember("onclick");
}
}
Try
if (inputTag.InnerHtml == "sign up" || inputTag.InnerText.Contains("sign up"))
{
inputTag.InvokeMember("click");
}
只是玩条件,检查你是否得到了正确的按钮。顺便说一句,在InvokeMember上"点击"一下。
当你已经有了焦点对象,尝试发送ENTER
键像这样:
SendKeys.Send("{ENTER}")