Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 如何使用HtmleElement以编程方式单击链接元素?_C#_Asp.net_Html_Webforms - Fatal编程技术网

C# 如何使用HtmleElement以编程方式单击链接元素?

C# 如何使用HtmleElement以编程方式单击链接元素?,c#,asp.net,html,webforms,C#,Asp.net,Html,Webforms,我在做一个自动化程序。我将网页加载到windows窗体中,并将其加载到WebBrowser控件中。然后,我需要按编程方式单击WebBrowser中的链接。我该怎么做?例如: 以上是两种不同的情况。第一个元素没有id属性,而第二个元素有。您知道如何通过编程方式单击每个按钮吗?您需要一种自动化浏览器的方法 一种方法是使用Watin()。它允许您编写一个.Net程序,通过一个方便的对象模型控制浏览器。它主要用于为网页编写自动测试,但也可用于控制浏览器 如果您不想以这种方式控制浏览器,那么您可以编写

我在做一个自动化程序。我将网页加载到windows窗体中,并将其加载到WebBrowser控件中。然后,我需要按编程方式单击WebBrowser中的链接。我该怎么做?例如:


  • 以上是两种不同的情况。第一个元素没有
    id
    属性,而第二个元素有。您知道如何通过编程方式单击每个按钮吗?

    您需要一种自动化浏览器的方法

    一种方法是使用Watin()。它允许您编写一个.Net程序,通过一个方便的对象模型控制浏览器。它主要用于为网页编写自动测试,但也可用于控制浏览器


    如果您不想以这种方式控制浏览器,那么您可以编写一个包含在页面上的javascript来执行单击操作,但我怀疑这是您的目标。

    您必须首先通过元素ID或其他过滤器找到元素:

    HtmlElement fbLink = webBrowser.Document.GetElementByID("fbLink");
    
    和模拟“点击”:

    通过内部文本查找链接的示例:

    HtmlElement FindLink(string innerText)
    {
        foreach (HtmlElement link in webBrowser.Document.GetElementsByTagName("a"))
        {
            if (link.InnerText.Equals("Google Me"))
            {
                return link;
            }
        }
    }
    

    以编程方式单击是什么意思?程序将自动单击链接。以编程方式单击意味着它由程序单击,但不是由userthx为您的回复而单击,Rune。但是,我正在使用axWebBrowser自己编写自动化函数。但我面临点击链接的问题:(@DEN如果这样一个简单的任务是一个问题,那么使用图书馆是一个强有力的理由。不确定这是否曾经是watin的领域,但它已经不存在了。它现在只位于这个答案中的链接,导致一些人提出快速致富。当前链接这是一个六年前的答案,所以我不确定它是否相关,但我修复了它d无论如何都要删除链接。谢谢!我无法在axwebbrowser事件下实现此代码。我尝试使用断点对其进行调试,但发现它将自动停止在“foreach(webBrowser.Document.GetElementsByTagName(“a”)”处。您知道发生了什么吗?mshtml.HTMLDocument htm=(mshtml.HTMLDocument)axWebBrowser1.Document;foreach(htm.getElementsByTagName(“a”)中的HtmlElement链接){if(link.InnerText.Equals(“高级搜索”){MessageBox.Show(“yea!!”;}}}这是一篇很老的帖子,我想知道为什么我总是把
    webBrowser.Document
    设为
    null
    ,以及如何处理
    DocumentCompleted
    事件。
    HtmlElement FindLink(string innerText)
    {
        foreach (HtmlElement link in webBrowser.Document.GetElementsByTagName("a"))
        {
            if (link.InnerText.Equals("Google Me"))
            {
                return link;
            }
        }
    }