2016-06-12 4 views
1

私は、同じクラス名のDIVが通常10〜12個あるサイトをスクラップしています。これらのDIVのいずれかをクリックすると、新しいページに移動します。私はそのページからデータを掻き集めて、前のページに戻って行き、次のdivをクリックするなどします。セレン:同じクラス名のすべての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のを見つけ、それらを一つ一つをクリックすることはできませんということですそれらを "再発見"する必要があります。

私はクリックだと、私は戻ってメインページに取得したいたびに、私は、インデックス+ 1つの位置にdiv要素をクリックします現在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に進むことができるかということです。ループは私にとってはうまくいかないようです。 – abhanan93

+0

@ abhanan93申し訳ありませんが、サンプルコードが更新されました。あなたはアイデアを得ることを願っています。 – alecxe

+0

あなたの努力のおかげで、@alecxa。しかし残念なことに、最初のdivを削って前の状態に戻ると、このエラーが発生します。 StaleElementReferenceException:メッセージ:要素がDOM – abhanan93

関連する問題