2016-06-12 251 views
1

我一直在努力研究一個通常具有10至12個DIV的網站,它們的類名相同。當點擊這些DIV中的任何一個時,它會進入一個新頁面。我想從該頁面抓取數據,然後導航回到上一頁,然後單擊下一個div等。Selenium:如何點擊所有具有相同類名的DIV

但我不明白,當我回到上一頁如何點擊下一個div?

任何幫助,將不勝感激。

matches = browser.find_elements_by_class_name('ipo-CompetitionBase ') 
index = 0 
while index <= len(matches): 
    matches[index].click() 
    browser.back() 
    index += 1 

回答

1

但問題是,你不能簡單地找到所有的div S和點擊它們一個接一個,因爲當你回到以前的頁面元素你以前發現已經變成了「過時」和你需要「重新找到」它們。

我會保持當前div元素我點擊和,每次我回到主頁面時的指數,我會點擊在索引+ 1個的位置div元素。繼續,直到你已經用盡主頁上的所有div元素。

更像是一個僞代碼:

index = 0 
while True: 
    divs = browser.find_elements_by_class_name('className') 

    try: 
     divs[index].click() 
    except IndexError: 
     break # no more elements, exit the loop 

    # do smth 
    # ... 

    browser.back() 

    index += 1 
+0

究竟如何我可以遍歷所有的DIV? - > browser.find_elements_by_class_name('className') find_elements_by_class_name以數組的形式返回找到的所有DIV。但問題是,當我從剛刮過的頁面回來時,我怎麼才能繼續下一個DIV。 Loop似乎不適合我。 – abhanan93

+0

@ abhanan93好的,更新了一個示例代碼。希望你明白這個主意。 – alecxe

+0

感謝您的努力,@alecxa。但不幸的是,當我在刮第一個div後回到之前,我遇到了這個錯誤。 StaleElementReferenceException:消息:元素不再附加到DOM – abhanan93

相關問題