如何自动提交javascript表单

时间:2012-01-25 17:15:29

标签: c# javascript asp.net

网页上有一个搜索按钮:

<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");
            }

我该怎么做?

提前感谢您的帮助..

4 个答案:

答案 0 :(得分:1)

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

您可以使用:

link.InvokeMember("Click");

在将链接变为变量后单击该链接。

答案 1 :(得分:0)

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

(旁注,你一直说“Java”,你的意思是“JavaScript”。两者截然不同。)

This answer非常相似(虽然不是完全重复,所以我对投票结束这个问题犹豫不决)问题似乎是一个可行的解决方案。你可能需要添加一个COM引用,我个人试图避免,除非绝对必要(但那只是我),但是能够在有问题的锚元素上调用“click”应该做的伎俩。 (假设WebBrowser控件正确地解释了页面上的JavaScript。)

答案 2 :(得分:-1)

您可以使用javascript获取button元素,然后手动调用click事件。 并且...我宁愿停止这样的编程(我的意思是在javascript中调用asp.net ids。有更简单的方法来做同样的事情。例如:提交按钮

答案 3 :(得分:-1)

了解您在C#中编写的代码将在服务器端执行的事实。你真正需要的是编写一个javascript代码,以便在客户端提交该表单。如果要提交表单,可以调用form.submit。