如何自动提交javascript表单
本文关键字:表单 javascript 提交 何自动 | 更新日期: 2023-09-27 18:21:20
网页上有一个搜索按钮:
<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('mojTemplate$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中对表单本身使用"submit"时运气不好(这就是你正在做的,通过一层间接)。
您可以使用:
link.InvokeMember("Click");
将链接放入变量后单击该链接。
我怀疑它没有"提交"的原因是因为页面中的元素不是表单元素,并且没有关联的提交操作。它是一个锚元素,href
中有一些JavaScript(至少可以说这很令人反感,但它不是您的代码,所以不要担心)。
(附带说明,你一直说"Java",意思是"JavaScript"。两者完全不同。)
对于一个非常相似的问题(虽然不是完全重复,所以我很犹豫是否投票结束这个问题),这个答案似乎是一个可行的解决方案。您可能需要添加COM引用,我个人会尽量避免,除非绝对是必要的(但这只是我自己),但能够在有问题的锚元素上调用"单击"应该就可以了。(假设WebBrowser
控件正确解释页面上的JavaScript。)
您可以使用javascript获取按钮元素,然后手动调用点击事件。和我宁愿停止这样的编程(我的意思是用javascript调用asp.net id。有很多更简单的方法可以做到这一点。例如:提交按钮
了解用C#编写的代码将在服务器端执行这一事实。您实际需要的是编写一个javascript代码,以便在客户端提交表单。当您想提交表单时,可以调用form.submit。