2015-04-06 82 views
1

我想选择使用XPATH将'onClick'函数定义为属性的网页上的所有锚定标记。 该网页我定位的是有这样的选择所有具有使用xpath的onclick的锚定标记

<a href="status.php?op=del&amp;status_id=2" onclick="return confirm('Are you sure you want to delete this item?')">Delete</a> 

锚标记经过大量的搜索,我发现以下潜在的解决方案,但他们都不工作。我曾尝试(和失败)

//a[@onclick|@href] 
//a[onclick] 
//a[@onclick] 
//a/@*[name()='onclick'] 
./*[onclick] #this should have selected all nodes with onclick function 

我也试过

//a/@onclick 

但这只返回的onclick函数定义在那里,因为我想整个锚标记。

问题:如何获取所有使用XPATH将onclick函数定义为属性的定位标记?

+2

'// a [@onclick]'看起来正确。 – alecxe

回答

1

中的XPath //a[@onclick]应该努力找到的onclick所有锚。

尝试在浏览器的控制台执行此提醒每一个锚:

(function(){ 
    var withOnclick = document.evaluate('//a[@onclick]', document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); 
    var anchor = withOnclick.iterateNext(); 
    while (anchor) { 
    alert(anchor.outerHTML); 
    anchor = withOnclick.iterateNext(); 
    } 
}()) 
0

$("a[onclick]")应该工作,如果你使用jQuery

+0

对不起没有提及此..我使用XPATH .. –

0

最后我能使用

//a[@onclick] 

做到这一点前,我是不正确的响应对象使用这一技术和因此无法获得链接。 为了进一步增加,以获得“URL”值一个可以这样做:

HtmlXPathSelector(response).select('//a[@onclick]/@href').extract() 

这将返回所有属于定义的属性的定位标签具有的“onClick”功能的链接列表。

感谢您的回答。