Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 点击html按钮_C#_Html_Visual Studio_Button_Webbrowser Control - Fatal编程技术网

C# 点击html按钮

C# 点击html按钮,c#,html,visual-studio,button,webbrowser-control,C#,Html,Visual Studio,Button,Webbrowser Control,我正在webbrowser控件中加载外部网站,并尝试单击按钮: <input type="submit" name="btnSubmit" class="rlg-btn-primary" value="Save changes"/> 问题是什么也没发生。没有错误消息。页面静止不动,什么也没发生。我相信代码是正确的。有什么想法吗?提前感谢。您需要使用为(将呈现为)而不是普通提供的HTML标记 您需要将HTML标记更改为此标记 <asp:Button ID="your_butto

我正在webbrowser控件中加载外部网站,并尝试单击按钮:

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

问题是什么也没发生。没有错误消息。页面静止不动,什么也没发生。我相信代码是正确的。有什么想法吗?提前感谢。

您需要使用为
(将呈现为
)而不是普通
提供的
HTML标记

您需要将
HTML标记
更改为此标记

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

对于
OnClick
事件,您可以按ctrl+space来显示现有
OnClick
事件的自动完成,或者创建一个新的事件

尝试将其转换为HTMLButtoneElement并单击如下所示

 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;
        }

    }

我可以问一下你想做什么或者你想实现什么吗?是否要对按钮执行
单击
,并在服务器端触发
单击
事件?如果是,您在
C#
代码中使用了哪些工具?您使用了“VisualStudio”吗?@Kyojimaru是的,我使用的是visual studio,是的,我想在服务器端触发单击事件。@xicocana如果我没有弄错的话,您正在webbrowser控件中加载外部网站,并试图右击按钮?我问这个问题的原因是答案和评论与问题大不相同。@Kris就是这样!我应该有更明确的方法来尝试自动化我与游戏网站的互动。。这不是我的页面,因此我无法更改html标记。我应该说得更清楚,对不起,我对此也很不了解,所以也许我了解你的解决方案wrong@xicocana,很抱歉,我以前理解你的问题是错误的,你试过调试它吗?它是否曾经点击过
元素InvokeMember(“点击”)?感谢您的回复!我一解决我刚发现的另一个问题,我就试试看。。我的密码永远不会进入前台。。有什么想法吗?也许页面没有完全加载,有些网站加载JavaScript和Ajax调用的代码。检查文档html以查看输入是否存在。很久以前,当我写Bing机器人时,我使用定时器等待Dom加载。还尝试将输入更改为小写,不确定是否区分大小写,只是想了想谢谢!我最后只是像你说的那样添加了一些timmers,现在效果很好
 HTMLButtonElement btnele = (HTMLButtonElement)ele.DomElement;
 btnele.click();
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;
        }

    }