网页上有一个搜索按钮:
<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");
}
我该怎么做?
提前感谢您的帮助..
答案 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。