2013-12-23 76 views
3

如何從WebBrowserControl中單擊的HtmlElement獲取XPath?從WebBrowserControl中單擊HtmlElement獲取XPath

這是我如何獲取點擊的HtmlElement:

System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document; 
document.MouseUp += new HtmlElementEventHandler(this.htmlDocument_Click); 

private void htmlDocument_Click(object sender, HtmlElementEventArgs e) 
{ 
    HtmlElement element = this.webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition); 
} 

我想點擊一個網站上的特定元素(價格,文章編號,說明等),並得到他們的XPath表達式。

謝謝!

回答

8

XPath表達式不是HTML的標準功能(與XML不同)。如果你正在尋找讓你可以在以後用Html Agility Pack使用元素的XPath,您至少有兩種選擇:

  1. 使用HtmlElement.Parent走到元素的DOM祖先樹和手動構建 中的XPath。

  2. 使用HTML敏捷性包本身做這樣的事情(未經測試):

HtmlElement element = this.webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition); 

var savedId = element.Id; 
var uniqueId = Guid.NewGuid().ToString(); 
element.Id = uniqueId; 

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(element.Document.GetElementsByTagName("html")[0].OuterHtml); 
element.Id = savedId; 

var node = doc.GetElementbyId(uniqueId); 
var xpath = node.XPath;