[英]How to auto submit javascript form
网页上有一个搜索按钮:
<td><table border="0" cellpadding="0" cellspacing="0"><tr><td dir="ltr" width="10" height="21"><img src="/global/images/ButtonLeftDove.gif" border="0" alt="" height="21" width="10" /></td><td height="21" align="center" valign="middle" class="ButtonDove" nowrap="nowrap"><a href="javascript:__doPostBack('mobjTemplate$ctl01$btnSearch2','')" onmouseover="window.status='Search';return true;" onmouseout="window.status='';return true;">Search</a></td><td dir="ltr" width="10" height="21"><img src="/global/images/ButtonRightDove.gif" border="0" alt="" height="21" width="10" /></td></tr></table></td>
它正在调用javascript函数javascript:__ doPostBack('mobjTemplate $ ctl01 $ btnSearch2','')
java函数如下:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
我需要自动单击该搜索按钮。
我尝试了这段代码,但是它不起作用:
HtmlElementCollection elemColl2 = null;
HtmlDocument doc = webBrowser.Document;
elemColl2 = doc.GetElementsByTagName("form");
foreach (HtmlElement elem in elemColl2)
{
elem.InvokeMember("submit");
}
我怎样才能做到这一点??
预先感谢您的帮助。
我建议尝试获取锚点(或按钮)并在其上使用.click()。 过去,我只是在javascript中在表单本身上使用“提交”而感到不走运(这是您通过间接层所做的事情)。
您可以使用:
link.InvokeMember("Click");
将链接放入变量后,单击该链接。
我怀疑它不是“提交”的原因是因为页面中的元素不是表单元素,并且没有关联的提交动作。 这是一个带有href
某些JavaScript的锚元素(至少可以说这令人反感,但这不是您的代码,所以请不必担心)。
(旁注,您一直说“ Java”,意思是“ JavaScript。”两者是完全不同的。)
这个答案非常相似(尽管不是完全重复,所以我犹豫不决要关闭这个问题),这似乎是一个可行的解决方案。 您可能需要添加一个COM引用,我个人尽量避免,除非绝对必要(不过这只是我),但能够调用“点击”的问题应该做的伎俩锚元素。 (假设WebBrowser
控件正确解释了页面上的JavaScript。)
您可以使用javascript获取button元素,然后手动调用click事件。 而且...我宁愿停止那样的编程(我的意思是在javascript中调用asp.net id。这样做的方法非常简单。例如:提交按钮
了解使用C#编写的代码将在服务器端执行的事实。 您真正需要的是编写一个JavaScript代码,以便该表单在客户端提交。 您可以在提交表单时致电form.submit。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.