繁体   English   中英

以编程方式调用按钮

[英]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是替代文本。

您实际上并没有为该按钮指定BusiBtnid

尝试:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM