2013-12-23 3 views
3

Как я могу получить XPath из щелчка HtmlElement в WebBrowserControl?Получить XPath из щелчка HtmlElement в WebBrowserControl

Это, как я получить щелкнутой 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). Если вы хотите, чтобы получить элемент XPath, который впоследствии можно использовать с Html Agility Pack, у вас есть по крайней мере два варианта:

  1. Подойдите DOM родословного дерево элемента с помощью HtmlElement.Parent и построить в XPath вручную.

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; 
: сам по себе и сделать что-то вроде этого (непроверенные)

  • Использование Html Agility пакет

  • Смежные вопросы