如何单击网络浏览器中的特定按钮

How to Click on specific button in web browser

我的网页中大约有 10 个按钮具有几乎相同的 HTML 输入 class,但我想对特定按钮执行虚拟点击。

我该怎么做?

以下是其中一些:

<input name="" value="ذخيره يا چاپ&nbsp;" onclick="saveOrPrint()" class="fieldbutton" type="button">  
<input name="" value="ارسال&nbsp;" onclick="return sendEmail()" class="fieldbutton" type="button">  
<input name="" tabindex="" value="نمایش رکوردهای انتخاب شده" onclick="displaySelectedRows()" disabled="disabled" class="fieldbutton" type="button">  

我想点击第一个按钮。此代码无效:

HtmlElementCollection classButton = webBrowser1.Document.All;
foreach (HtmlElement element in classButton)
{
    if (element.GetAttribute("type") == "button" &&
        element.GetAttribute("class") == "fieldbutton")
    {
        element.InvokeMember("click");
    }
}

所有代码:

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElement textElement = webBrowser1.Document.All.GetElementsByName("simpleSearch.value")[0];
        textElement.SetAttribute("value", "9789643775070");
        HtmlElement searchtype = webBrowser1.Document.All.GetElementsByName("simpleSearch.indexFieldId")[0];
        searchtype.SetAttribute("value", "221091");
        HtmlElement documenttype =
            webBrowser1.Document.All.GetElementsByName("bibliographicLimitQueryBuilder.biblioDocType")[0];
        documenttype.SetAttribute("value", "BF");
        HtmlElement button =
            webBrowser1.Document.GetElementsByTagName("input")
                .Cast<HtmlElement>()
                .FirstOrDefault(m => m.GetAttribute("type") == "submit");
        button.InvokeMember("click");

        HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input");

        foreach (HtmlElement element in classButton)
        {
            var value = element.GetAttribute("value");
            if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
            {
                element.InvokeMember("click");
            }
        }
    }
    private void btn_LibraryManagement_NewCheckout_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(@"http://opac.nlai.ir/opac-prod/search/searchBF.do");
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
    }

编辑:
这不是我的网站,我无法更改此网站上的任何内容。
感谢帮助

您在构建页面时是否尝试过为每个按钮添加一些独特的 "ID"(html 中的属性)?之后将更容易识别独特的动作。

喜欢

<input id="print" name="" value="ذخيره يا چاپ&nbsp;" onclick="saveOrPrint()" class="fieldbutton" type="button">
<input  id="emailing" name="" value="ارسال&nbsp;" onclick="return sendEmail()" class="fieldbutton" type="button">
<input  id="selectedrows" name="" tabindex="" value="نمایش رکوردهای انتخاب شده" onclick="displaySelectedRows()" disabled="disabled" class="fieldbutton" type="button">

比在你的 foreach 里面,例如:

if (element.GetAttribute("type") == "button" &&
    element.GetAttribute("id") == "emailing")
{
    element.InvokeMember("click");
}

为每个标签添加id并根据按钮id调用点击事件,而不是根据class。

你应该使用价值。试试这个:

HtmlElementCollection classButton = webBrowser1.Document.GetElementsByTagName("input"); 

foreach (HtmlElement element in classButton)

{
    var value = element.GetAttribute("value");

    if (value.Trim().ToLower().Equals("ذخيره يا چاپ"))
        {
           element.InvokeMember("click");
        }
}