以编程方式单击“调用”按钮

时间:2014-03-09 12:16:14

标签: c# asp.net

我想以编程方式点击网页上的按钮,其中包含此类

<input alt="BusiBtn" class="aButtn" type="submit" value="Search" tabindex="16">

当我这样做时

WebBrowser b = new WebBrowser();
b.Navigate(URL);
while (b.ReadyState != WebBrowserReadyState.Complete)
{
   Application.DoEvents();
}
b.Document.GetElementByID("BusiBtn").InvokeMember("click");

我得到“对象引用未设置为对象错误的实例”。

有人可以提供帮助。

由于 Rashmi

4 个答案:

答案 0 :(得分:2)

在这种情况下您可以执行的操作只是找到HtmlElementinput标记的所有input。如果您需要一般调用所有click标记,那么只需在它们上调用input即可。如果您只需要上述input元素,则过滤所有HtmlElementCollection elems = b.Document.GetElementsByTagName("input"); foreach (HtmlElement elem in elems) { string altStr = elem.GetAttribute("alt"); string classStr = elem.GetAttribute("class"); string typeStr = elem.GetAttribute("type"); string valueStr = elem.GetAttribute("value"); string tabindexStr = elem.GetAttribute("tabindex"); if((altStr == "BusiBtn") && (classStr == "aButtn") && (typeStr == "submit") && (valueStr == "Search") && (tabindexStr == "16")) { elem.InvokeMember("click"); break; } } 标记,以使用上述属性值搜索特定标记。请查看以下代码:

{{1}}

答案 1 :(得分:1)

你使用了错误的字段。

alt用于替代文字。

您实际上没有给id BusiBtn的{​​{1}}按钮。

尝试:

<input id="BusiBtn" class="aButtn" type="submit" value="Search" tabindex="16">

线索在GetElementByID电话中。由于某种原因,它不会被称为GetElementByAlt;)

答案 2 :(得分:1)

将“name”属性添加到输入标记,然后使用GetElementsByName属性

答案 3 :(得分:0)

您应该使用GetElementsByTagName方法而不是GetElementById来获取页面上的所有Input-Elements,然后使用GetAttribute循环。可以在此处找到一个示例http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.getelementsbytagname(v=vs.110).aspx