Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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# 从WebBrowserControl中单击的HtmleElement获取XPath_C#_Xpath_Webbrowser Control - Fatal编程技术网

C# 从WebBrowserControl中单击的HtmleElement获取XPath

C# 从WebBrowserControl中单击的HtmleElement获取XPath,c#,xpath,webbrowser-control,C#,Xpath,Webbrowser Control,如何从WebBrowserControl中单击的HtmleElement获取XPath 以下是检索单击的HtmlElement的方式: System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document; document.MouseUp += new HtmlElementEventHandler(this.htmlDocument_Click); private void htmlDocument_Click(obj

如何从WebBrowserControl中单击的HtmleElement获取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表达式


谢谢大家!

XPath表达式不是HTML的标准特性(与XML不同)。如果您希望获得稍后可用于的元素XPath,则至少有两个选项:

  • 使用并构造元素的DOM祖先树 手动创建XPath

  • 使用Html Agility Pack本身并执行以下操作(未经测试):

  • 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;