selemiumを使用して指定したタブの要素を取得したいのですが、うまくできません。正確には最初の一回はうまくいくのですが繰り返しの処理をしようとすると、指定していないタブを参照しています。
コメントアウトしているところでミスがあるように思います。driver.window_handlesを操作したりしましたが解決しませんでした。
def click(item_id): driver.switch_to.window(driver.window_handles[0]) # print(driver.current_url) #商品リンクのクリック item_elem = driver.find_elements_by_id(item_id) for i in range(len(item_elem)): item_elem_class = item_elem[i].find_elements_by_class_name('sbj') for j in range(len(item_elem_class)): item_links = item_elem_class[j].find_elements_by_tag_name("a") if len(item_links) == 1: item_link = item_links[0] else: item_link = item_links[len(item_links)-1] print(item_link.text) #←ここで、クリックしたい要素がしっかり取れていることを確認しています driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")#画面のスクロール item_link.click()#商品リンクのクリック完了、新しいタブ生成(item_linkの要素をクリックすると新しいタブが生成されます) time.sleep(5) driver.switch_to.window(driver.window_handles[1]) print(driver.current_url)#←ここで最初のURLだけは正常に取得できているのですが、繰り返しの2回目から同じURLを取得してしまいます。 コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/10 13:04
2021/05/10 13:10
2021/05/10 23:36
2021/05/11 01:57
2021/05/11 04:45
2021/05/11 04:51
2021/05/11 05:08