有没有办法在Google Chrome浏览器中获取XPath?


346

我有一个要与YQL一起使用的网页。但是我需要特定项目的XPath。我可以在Google Chrome的调试工具区域中看到它,但没有找到复制该XPath的方法。

有没有办法复制完整的XPath?


2
如果您愿意除Chrome之外还安装Firefox,则可以使用xpather扩展名。
Adrian Grigore 2010年

4
如果他愿意安装Firefox,它已经内置在Firebug中。
2011年

2
@verhogen:尽管我几乎每天都在使用Firebug,但我并没有意识到这一点。如果有人对更多信息感兴趣,请访问:blog.browsermob.com/2009/04/…–
Adrian Grigore

我也对此表示反对。.无论是按[Ctrl + Shift + X]快捷键,还是在浏览器中单击黑色的“ X路径”按钮(通过扳手按钮),谷歌浏览器中的Xpath帮助器都无法正常工作。页面中出现JS错误时,显示JS控制台。而且我在那里找不到其他适用于Chrome的其他好加载项。不要下载Mozilla的“ XPath Checker”加载项。我也发现了该插件的问题。确保在打开Firefox(而不是其他浏览器)的情况下获取“ XPather”并下载。要使用“ XPather”右键单击元素,然后选择“在XPather中显示”
MacGyver

现在,Chrome也具有“ XPather”扩展名。我感觉很好。Alt-x激活窗口。您可以输入xpath并查看匹配的结果。匹配结果的显示非常简洁。
gm2008 2015年

Answers:


555

您可以$x在Chrome JavaScript控制台中使用。无需扩展。

例如: $x("//img")

Web检查器中的搜索框也将接受xpath


2
很好-尽管我不确定这是否能回答最初的问题。您是如何找到它的?我想知道控制台中是否还有其他类似功能。
huyz 2011年

4
我猜Chrome浏览器复制了大多数Firebug命令行命令:getfirebug.com/wiki/index.php/Command_Line_API
huyz 2011年

99
他在问“如何获取元素的xpath字符串?”,而不是“如何通过xpath选择?”。是不是
Max Williams

3
有趣的东西Ctrl+Space不能揭示$x。如果您只键入内容$x,就可以看到它是如何实现的,因此OP应该能够确定如何实现他们想要的目标。例如; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair'4

5
@huyz-有类似的功能。请参阅developers.google.com/chrome-developer-tools/docs/console。$ 0特别有用:在DOM工具中选择的最后一个元素。$($ 0)使其成为jQuery对象(如果jQuery可用)。此外,本文也没有提到copy($ 0),它会复制到剪贴板。(顺便说一句,只是发现$ x,并找到了该线程,因为我试图在控制台中将该变量用于其他功能。)
Nathan Long

242

右键单击节点=>“复制XPath”


19
这是获取xpath的最脆弱的方法,很可能会在内容更改时中断
Juan Mendes 2014年

8
@JuanMendes有什么选择?
2014年

9
@Nate如果您希望XPath在文档更改时仍然可以工作,则没有简单的选择。您只需要考虑一下,不要在您的XPath中添加多余的信息。一条经验法则是,您的XPath越长,在其他上下文中工作的可能性就越小。
Juan Mendes 2014年

这不会为您提供页面上唯一元素的实际XPath。那将是非常困难的。
CJ7

1
在新版本的Google chrome中,您必须右键单击该节点,然后选择已移至“复制”选项的“复制XPath”项。
奥米德·纳斯里

92

以上所有答案都是正确的,这里也是截屏的另一种方法。

从Chrome浏览器:

  1. 右键单击您要查找xpath的项目上的“检查”
  2. 右键单击控制台上突出显示的区域。
  3. 转到复制xpath

在此处输入图片说明



13

chrome现在不需要扩展程序。右键单击想要xpath的任何元素,然后单击“检查元素”,然后再次在检查器中,右键单击元素,然后单击“复制Xpath”。


11
去年发布的先前答案中已经提到了此方法:stackoverflow.com/a/11087358/938089
Rob W

12

Google Chrome浏览器开箱即用提供了一个内置的调试工具,称为“ Chrome DevTools ”,其中包括一个方便的功能,该功能可以评估或验证XPath / CSS选择器,而无需任何第三方扩展。

这可以通过两种方法来完成:

使用“元素”面板中的搜索功能可以评估XPath / CSS选择器并突出显示DOM中的匹配节点。在控制台面板中执行令牌$ x(“ some_xpath”)或$$(“ css-selectors”),这些令牌将进行评估和验证。

从“元素”面板

  1. 按F12打开Chrome DevTools。

  2. 默认情况下应打开“元素”面板。

  3. 按Ctrl + F启用面板中的DOM搜索。

  4. 输入XPath或CSS选择器进行评估。

  5. 如果存在匹配的元素,它们将在DOM中突出显示。但是,如果DOM中有匹配的字符串,它们也将被视为有效结果。例如,CSS选择器标头应匹配包含单词标头的所有内容(内联CSS,脚本等),而不是仅匹配元素。

在此处输入图片说明

从控制台面板

  1. 按F12打开Chrome DevTools。

  2. 切换到控制台面板。

  3. 输入$x(".//header")要评估和验证的XPath 。

  4. 输入喜欢$$("header")评估和验证的CSS选择器。

  5. 检查从控制台执行返回的结果。

如果元素匹配,它们将以列表形式返回。否则,将显示一个空列表[]。

$x(".//article")
[<article class="unit-article layout-post">…</article>]

$x(".//not-a-tag")
[ ]

如果XPath或CSS选择器无效,则异常将以红色文本显示。例如:

$x(".//header/")
SyntaxError: Failed to execute 'evaluate' on 'Document': The string './/header/' is not a valid XPath expression.

$$("header[id=]")
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'header[id=]' is not a valid selector.

10

让我们告诉您一个简单的公式来查找任何元素的xpath:

1-在浏览器中打开网站

2-选择元素并右键单击它

3-单击检查元素选项

4-右键单击选定的HTML

5-选择复制xpath的选项

该视频链接将对您有所帮助。 http://screencast.com/t/afXsaQXru

注意:对于xpath的高级选项,您必须知道regex或html模式。


3
使用Chrome控制台进行了测试,并通过$x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
投票完成了

8

xpathOnClick提供了您所需要的东西:https ://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

尽管阅读注释,但实际上需要三下单击才能获得xpath。


在chrome 12.0.742.124的ubuntu 10.04上似乎不起作用,已安装,但单击xpath图标,然后单击页面(第一次关闭xpath弹出窗口),然后单击页面元素(在js控制台中显示xpath) )....控制台中没有任何显示。在插件站点上进行了测试
xiatica,2011年

8

从chrome的最新更新开始,您现在可以单击元素检查器中的任何元素,然后将XPath复制到剪贴板。


5

以Chrome为例,例如:

  1. 右键单击您要查找XPath的项目上的“检查”。
  2. 右键单击HTML DOM上突出显示的区域。
  3. 转到复制>选择“复制XPath”。
  4. 完成上述步骤后,您将从DOM中获取元素的绝对XPath。
  5. 您可以进行更改以使其成为相对的XPath(因为如果DOM更改,您的XPath仍然可以找到该元素)。

一个。为此,通过打开浏览器的“元素”面板,按CTRL + F,粘贴XPath。

b。如以下示例中所述进行更改。

绝对xpath = // * [@@ =“ =” app“] / div [1] / header / nav / div [2] / ul / li [2] / div / button

相关xpath = // div // nav / div [2] / ul / li [2] / div / button

进行更改时:

  1. 确保XPath在DOM中是唯一的。
  2. 仍然在DOM和网页上选择了web元素。

3

只需右键单击想要xpath的元素,您将看到一个菜单项来复制它。当OP担任职务时,这可能并不存在,但现在肯定存在。


2

在Firefox的Firebug中,您可以在检查元素后右键单击它,然后选择“复制XPath”。我无法让ChromYQLip正常工作。


1

您可以尝试使用Chrome Web Extension TruePath,它会在右键单击网页时动态生成相对的XPath,并将所有XPath显示为菜单项。


0

稍加说明,但可能有用:在Mac Chrome上,尽管您无法将xpath从Dev工具面板的搜索框中复制出来(相反,复制将节点作为HTML捕获),但是您可以将文本拖放到外部编辑器中。



0

Cntl + Shift + C
选择你希望得到它的元素XPath通过点击它
right click在控制台中突出显示的部分
copy- >copy XPath

在此处输入图片说明


-1

使用此扩展名,它会基于id或class生成xpath,这可能是您想要使用的。

单击浏览器图标,该面板显示在页面的右上角,然后单击开始检查,然后单击任何元素以获取xpath。

XPath生成器


不需要,因为它是本地可用的。同样,无需下载全新的应用程序即可获得Chrome / Firefox本身可以执行的操作。
robbyoconnor

@robbyoconnor如果您已经进行了一些黑盒测试或爬网,您将知道浏览器生成的xpath不稳定。
ospider
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.