[英]Invoke button click programmatically
我想以编程方式单击带有此类源的网页上的按钮
<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");
我得到“对象引用未设置为对象错误的实例”。
有人可以帮忙吗?
谢谢拉什米
在这种情况下,您可以做的只是找到所有具有input
标记的HtmlElement
。 如果您一般需要调用所有input
标签,则只需click
它们就可以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;
}
}
您使用的字段错误。
alt
是替代文本。
您实际上并没有为该按钮指定BusiBtn
的id
。
尝试:
<input id="BusiBtn" class="aButtn" type="submit" value="Search" tabindex="16">
线索在GetElementByID
调用中。 由于某种原因,它不被称为GetElementByAlt
;)
将'name'属性添加到输入标签,然后使用GetElementsByName属性
您应该使用GetElementsByTagName方法而不是GetElementById来获取页面上的所有输入元素,然后循环使用GetAttribute。 可以在http://msdn.microsoft.com/zh-cn/library/system.windows.forms.htmldocument.getelementsbytagname(v=vs.110).aspx中找到示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.