簡體   English   中英

C#點擊HTML按鈕

[英]c# click on html button

我在webbrowser控件中加載了一個外部網站並嘗試單擊一個按鈕:

<input type="submit" name="btnSubmit" class="rlg-btn-primary" value="Save changes"/>

這個C#代碼:

var elems = webBrowser1.Document.GetElementsByTagName("INPUT");

foreach (HtmlElement elem in elems)
{
    if (elem.GetAttribute("value") == "Save changes")
    {
        elem.InvokeMember("click");
    }
}

問題是什么也沒發生。 沒有錯誤信息。 頁面只是靜止不動,什么也沒有發生。 我相信代碼是正確的。 有什么想法嗎? 提前致謝。

您需要使用的HTML Tag提供的是:這是<asp:Button> (將呈現為<input type="button">而不是普通的<input type="submit">

您需要將HTML Markup更改為這一HTML Markup

<asp:Button ID="your_button_id" runat="server" OnClick="your_button_id_Click" />

然后在您的代碼后面,不要忘記添加

void your_button_id_Click(Object sender, EventArgs e)
{
    ... // Your code goes here
}

對於OnClick事件,您可以按Ctrl + 空格鍵以顯示現有OnClick事件的自動完成功能,或創建一個新的

嘗試將其轉換為HTMLButtonElement並單擊如下所示

 HTMLButtonElement btnele = (HTMLButtonElement)ele.DomElement;
 btnele.click();

為此,您需要添加Microsoft.mshtml參考。 我使用下面的幫助程序類,可能會進一步幫助您

public static class HtmlElementHelper
    {
        public static string Val(this WebBrowser wb, string id, string Val = null)
        {
            HtmlElement ele = wb.Document.GetElementById(id);
            if (ele.IsNotNull())
            {
                HTMLInputElement txtele = (HTMLInputElement)ele.DomElement;
                if (Val.IsNull())
                    Val = txtele.value;
                else
                    txtele.value = Val; 
            }
            return Val;
        }
        public static void eleClick(this WebBrowser wb, string id)
        {
            HtmlElement ele = wb.Document.All[id];
            if (ele.IsNotNull())
            {
                switch (ele.TagName.ToLower())
                {
                    case "input":
                        HTMLButtonElement btnele = (HTMLButtonElement)ele.DomElement;
                        btnele.click();
                        break;
                    case "a":
                        HTMLAnchorElement ancele = (HTMLAnchorElement)ele.DomElement;
                        ancele.click();
                        break;
                } 
            }
        }
        public static void eleClick(this WebBrowser wb, string tag, string data)
        {
            HtmlElementCollection eleCollection = wb.Document.GetElementsByTagName(tag);
            foreach (HtmlElement ele in eleCollection)
            {
                if (ele.InnerHtml.ToCString().ToLower() == data)
                {
                    switch (tag)
                    {
                        case "a":
                             HTMLAnchorElement ancele = (HTMLAnchorElement)ele.DomElement;
                            ancele.click();
                            break;
                    }
                    break;
                }
            }
        }
        public static string Html(this WebBrowser wb, string id, string val = null)
        {
            HtmlElement ele = wb.Document.GetElementById(id);
            if (ele.IsNotNull())
            {
                switch (ele.TagName.ToLower())
                {
                    case "span":
                        HTMLSpanElement spanEle = (HTMLSpanElement)ele.DomElement;
                        if (val.IsNull())
                            val = spanEle.innerHTML;
                        else
                            spanEle.innerHTML = val;
                        break;
                    case "div":
                        HTMLDivElement divEle = (HTMLDivElement)ele.DomElement;
                        if (val.IsNull())
                            val = divEle.innerHTML;
                        else
                            divEle.innerHTML = val;
                        break;
                } 
            }
            return val;
        }
        public static string Style(this WebBrowser wb, string id)
        {
            HtmlElement ele = wb.Document.All[id];
            return ele.Style.ToCString();
        }
        public static string Attr(this WebBrowser wb, string id, string key, string val=null,bool isTag=false,string data =null)
        {
            if (!isTag)
            {
                HtmlElement ele = wb.Document.All[id];
                if (val.IsNull())
                    val = ele.GetAttribute(key);
                else
                    ele.SetAttribute(key, val); 
            }
            else
            {
                HtmlElementCollection eleCollection = wb.Document.GetElementsByTagName(id);
                foreach (HtmlElement ele in eleCollection)
                {
                    if (ele.InnerHtml.ToCString().ToLower().Contains(data))
                    {
                        switch (id)
                        {
                            case "a":
                                if (val.IsNull())
                                    val = ele.GetAttribute(key);
                                else
                                    ele.SetAttribute(key, val);
                                break;
                        }
                        break;
                    }
                }
            }
            return val;
        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM