2016-06-12 248 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

相关问题