如何自动提交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");
            }

我该怎么做??

感谢您提前提供的帮助。。

如何自动提交javascript表单

我建议尝试获取锚点(或按钮)并在上面使用.click()。我只是过去在javascript中对表单本身使用"submit"时运气不好(这就是你正在做的,通过一层间接)。

您可以使用:

link.InvokeMember("Click");

将链接放入变量后单击该链接。

我怀疑它没有"提交"的原因是因为页面中的元素不是表单元素,并且没有关联的提交操作。它是一个锚元素,href中有一些JavaScript(至少可以说这很令人反感,但它不是您的代码,所以不要担心)。

(附带说明,你一直说"Java",意思是"JavaScript"。两者完全不同。)

对于一个非常相似的问题(虽然不是完全重复,所以我很犹豫是否投票结束这个问题),这个答案似乎是一个可行的解决方案。您可能需要添加COM引用,我个人会尽量避免,除非绝对是必要的(但这只是我自己),但能够在有问题的锚元素上调用"单击"应该就可以了。(假设WebBrowser控件正确解释页面上的JavaScript。)

您可以使用javascript获取按钮元素,然后手动调用点击事件。和我宁愿停止这样的编程(我的意思是用javascript调用asp.net id。有很多更简单的方法可以做到这一点。例如:提交按钮

了解用C#编写的代码将在服务器端执行这一事实。您实际需要的是编写一个javascript代码,以便在客户端提交表单。当您想提交表单时,可以调用form.submit。