2015-04-06 126 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」功能的鏈接列表。

感謝您的回答。