加载ASP网站检索并重定向C#中的href

时间:2014-12-01 13:22:59

标签: javascript c# html asp.net

我正在做我的第一个加载项Outlook。我想在表单中加载ASP网站,并使用href标记中的<li>重定向。没有特定的ID只能识别<span>的值。见下文。提前谢谢。

<li class="rmItem ">
<a class="rmLink rmSelected" style="width: 194px;" href="javascript:Goto('DM_NEW_OBJECT.ASPX?DM_CAT_ID=2171&amp;DM_PARENT_ID=254769&amp;INPUTSELECTION=&amp;DM_OBJECT_ID=0&amp;PACK_ID=0&amp;CASE_ID=0&amp;mode=0&amp;SITE=Default');">
<span class="rmText">Dossier protection</span>
</a>
</li>

1 个答案:

答案 0 :(得分:0)

您可以将自己附加到DocumentCompleted事件,它会在文档完全加载时触发,然后您可以以类似的方式搜索DOM。

首先,在构造函数中为DocumentCompleted事件添加事件处理程序,并在Form关闭时删除事件处理程序。

在加载事件中,您可以导航到想要的页面,然后在DOM中搜索所有li,然后检查所需的文本。如果匹配,则搜索URL,然后调用click事件(这将触发您的javascript Goto功能)。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        webBrowser1.DocumentCompleted += OnPageCompleted;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate(Path.Combine(Environment.CurrentDirectory, "DemoPage.html"));
    }

    protected virtual void OnPageCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (webBrowser1.Document == null)
        {
            return;
        }
        if (webBrowser1.Document.Body == null)
        {
            return;
        }
        HtmlElementCollection col = webBrowser1.Document.Body.GetElementsByTagName("li");
        if (col == null || col.Count == 0)
        {
            return;
        }
        foreach (HtmlElement elem in col)
        {
            if (elem == null || string.IsNullOrWhiteSpace(elem.InnerHtml))
            {
                continue;
            }
            var links = elem.GetElementsByTagName("a");
            if (links == null || links.Count == 0)
            {
                continue;
            }
            foreach (HtmlElement url in links)
            {
                if (url == null || string.IsNullOrWhiteSpace(url.InnerHtml))
                {
                    continue;
                }
                try
                {
                    url.InvokeMember("click");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.GetType().FullName + "\r\n" + ex.Message);
                }
            }
        }
    }

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        webBrowser1.DocumentCompleted -= OnPageCompleted;
    }
}