为什么 XPath 无法 select 来自 HTML 的任何内容?
Why is XPath failing to select anything from HTML?
我的HTML长得像
...
<lots of nested tags>
<div class="tiles-tile">
<div class="brick">
<div class="brick-header">
...
<ul class="links">
<li><i class="icon-minus"></i></li>
<li><i class="icon-resize-small"></i></li>
<li><i class="icon-list"></i></li>
<li><i class="icon-time"></i></li>
<li><a></a></li>
</ul>
</div>
</div>
</div>
</lots of nested tags>
<lots of nested tags>
<div class="tiles-tile">
<div class="brick">
<div class="brick-header">
...
<ul class="links">
<li><i class="icon-minus"></i></li>
<li><i class="icon-resize-small"></i></li>
<li><i class="icon-list"></i></li>
<li><i class="icon-time"></i></li>
<li><a></a></li>
</ul>
</div>
</div>
</div>
</lots of nested tags>
...
我已经尝试了所有我能想到的方法,通过使用 XPath 来获取所有 <i class="icon-list"
元素的列表,但我就是想不出来。
比如我试过
//div[@class=\"brick-header\"]/ul/li/i[@class=\"icon-list\"]
但这给了我一个空列表。
我该怎么做?
以下 XPath 将 select class icon-list
的所有 i
元素,而不考虑祖先元素:
//i[@class='icon-list']
您的 XPath 可能无法正常工作的原因
有一个命名空间声明需要考虑。
补救措施:声明正确的名称空间前缀并在 XPath 中使用它(最好),或针对本地名称进行测试以避免任何名称空间:
//*[local-name()='i' and @class='icon-list']
还有其他 class 与 icon-list
一起列出。
补救措施:在谓词中使用contains()
而不是相等:
//i[contains(concat(' ',@class,' '), ' icon-list ')]
JavaScript 正在构建或更改标记结构
XPath 是 运行.
补救措施:等待应用测试,直到文档完成加载并且 JavaScript 完成 运行。
我的HTML长得像
...
<lots of nested tags>
<div class="tiles-tile">
<div class="brick">
<div class="brick-header">
...
<ul class="links">
<li><i class="icon-minus"></i></li>
<li><i class="icon-resize-small"></i></li>
<li><i class="icon-list"></i></li>
<li><i class="icon-time"></i></li>
<li><a></a></li>
</ul>
</div>
</div>
</div>
</lots of nested tags>
<lots of nested tags>
<div class="tiles-tile">
<div class="brick">
<div class="brick-header">
...
<ul class="links">
<li><i class="icon-minus"></i></li>
<li><i class="icon-resize-small"></i></li>
<li><i class="icon-list"></i></li>
<li><i class="icon-time"></i></li>
<li><a></a></li>
</ul>
</div>
</div>
</div>
</lots of nested tags>
...
我已经尝试了所有我能想到的方法,通过使用 XPath 来获取所有 <i class="icon-list"
元素的列表,但我就是想不出来。
比如我试过
//div[@class=\"brick-header\"]/ul/li/i[@class=\"icon-list\"]
但这给了我一个空列表。
我该怎么做?
以下 XPath 将 select class icon-list
的所有 i
元素,而不考虑祖先元素:
//i[@class='icon-list']
您的 XPath 可能无法正常工作的原因
有一个命名空间声明需要考虑。
补救措施:声明正确的名称空间前缀并在 XPath 中使用它(最好),或针对本地名称进行测试以避免任何名称空间:
//*[local-name()='i' and @class='icon-list']
还有其他 class 与
icon-list
一起列出。补救措施:在谓词中使用
contains()
而不是相等://i[contains(concat(' ',@class,' '), ' icon-list ')]
JavaScript 正在构建或更改标记结构 XPath 是 运行.
补救措施:等待应用测试,直到文档完成加载并且 JavaScript 完成 运行。