2017-12-18 251 views
1

在包含下面这段代码的网页:为什么我无法在包含'svg'元素的xpath的网页中找到'svg'元素?

... 
<svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1394" height="450" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%;"> 
<defs id="defs-a3c0aa"> 
<g class="clips"> 
<clipPath class="axesclip" id="clipa3c0aax"> 
<rect x="40" y="0" width="1274" height="450"> 
.... 

我用的是“尝试XPath的”扩展搜索的XPath,我尝试下面的表达式:

//svg 

,但没有命中回来。找到的元素数量为零。该页面中没有iframe。

那么会发生什么? (我不能发布页面,因为它不是公开的)...

回答

1

您更好地利用

//*:svg 

这意味着有任何名字空间和本地名称的所有后代是svg

//*[local-name() = 'svg'] 

上面的一个也会工作。希望这有助于...

+0

是的,似乎与'尝试XPath',但不是在硒内... – Alex

+0

我想你最好用最后一个...这比第一个更好... – Cylian

+0

我用了最后一个。不适用于硒 – Alex

0

<svg>元素有一个名称空间。您需要使用前缀注册名称空间,并在XPath中指定前缀。例如,如果您注册http://www.w3.org/2000/svg前缀s,XPath表达式将成为

//s:svg 

如何注册命名空间取决于你所使用的语言的方法。下面的XPath