我正在做我的第一个加载项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&DM_PARENT_ID=254769&INPUTSELECTION=&DM_OBJECT_ID=0&PACK_ID=0&CASE_ID=0&mode=0&SITE=Default');">
<span class="rmText">Dossier protection</span>
</a>
</li>
答案 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;
}
}