2013-05-22 66 views
0

我試圖從一些看起來像這樣搶數據:我的XPath不工作

<html> 
<table> 
    <tr> 
    <td> 
    <div> 
    <tr> 
    <td> 
    <div> 

我認爲這基本上是我一直在尋找比較早,所以我做了$x('//table/tr/td/div')。這返回像10個div,所有我想要的。但是,我找不到通過這10個div進行導航的方法。難道不只是$x('//table/tr/td/div[?]'),在哪裏?可以是1-10? BTW這是一個動態表,每個div是一個不同的模塊來導航到頁面的一部分,所以我試圖自動登錄和去某個模塊,但我只能選擇全部10個而不是單個模塊。在這個html中,div 1和div 2就像「安全模塊」和「票務模塊」。

回答

2

首先,您可能想嘗試Firefox上的Firebug + Firepath,這是一款比Chrome開發人員工具更方便的工具。

對於你的問題,你可以通過XPath或硒

做到這一點使用XPath的指數(開始從一個),說要第二:

# second div's xpath: (//table/tr/td/div)[2] 
second_div = driver.find_element_by_xpath("(//table/tr/td/div)[2]") 

使用Selenium的索引(即讓所有從你的XPath,然後對其進行索引從零開始)十點的div:

all_divs = driver.find_elements_by_xpath("//table/tr/td/div") # all_divs should have 10 elements 
second_div = all_divs[1] # zero-based index 
+0

真棒,謝謝,我不能馬上測試,但看起來將很好地工作 – gallly