我想以编程方式点击网页上的按钮,其中包含此类
<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
答案 0 :(得分:2)
在这种情况下您可以执行的操作只是找到HtmlElement
个input
标记的所有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。