如何点击没有ID的网页上的按钮?

时间:2017-02-07 07:31:49

标签: javascript c# jquery asp.net

如果您导航至this website,则可以看到有ExportExcel按钮。如果我查看源,我会找到以下格式的按钮:

<td align="right" class="ExportExcel" valign="middle">                                    
    <a href="JavaScript:void(0)" onClick="openExport('../pages/ListExportToExcel.aspx?zipCode=&city=&county=&sState=MI&fromPrice=0&toPrice=0&fCaseNumber=&bed=0&bath=0&street=&buyerType=0&specialProgram=&Status=0&indoorAmenities=&outdoorAmenities=&housingType=&stories=&parking=&propertyAge=');return false;" >Export to</a>
</td>

关注this solution

WebBrowser MyBrowser = new WebBrowser();
MyBrowser.Navigate("https://www.hudhomestore.com/Listing/PropertySearchResult.aspx?sState=MI");
HtmlElementCollection classButton = MyBrowser.Document.All;
foreach (HtmlElement element in classButton)
    if (element.GetAttribute("ExportExcel") == "button")
        element.InvokeMember("click");

我收到错误,因为MyBrowser.Document为空:

  

对象引用未设置为对象的实例。

我哪里错了?或者有更好/不同的方式吗?

修改

根据s uggestion by user @DavidR,我尝试了以下内容,但MyBrowser_DocumentCompleted从未获得任何点击:

public partial class mainForm : Form
{
    WebBrowser MyBrowser = new WebBrowser();

    // ..

    private void mainForm_Load(object sender, EventArgs e)
    {
        MyBrowser.Navigate("https://www.hudhomestore.com/Listing/PropertySearchResult.aspx?sState=MI");
    }

    void MyBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElementCollection classButton = MyBrowser.Document.All;
        foreach (HtmlElement element in classButton)
            if (element.GetAttribute("ExportExcel") == "button")
                element.InvokeMember("click");
    }

}

1 个答案:

答案 0 :(得分:1)

获取所有Anchor tags并找到您要点击的所需tag。我已经制作了一个代码,试试这个。

        HtmlElementCollection links = MyBrowser.Document.GetElementsByTagName("A");
        foreach (HtmlElement link in links)
        {
            if (link.InnerText!=null && link.InnerText.Equals("Export to"))
                link.InvokeMember("Click");
        }

希望它有所帮助。