Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Selenium Loop Through Links

Im new to python, or coding for that matter...

This part of the code allows me to find all the elements that I want to click (click on the link open a new tab)

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.rezultati.com/kosarka/filipini/kup/")

list_of_links = driver.find_elements_by_css_selector(".cell_ad.time")
for link in list_of_links:
    link.click()

Obviously this for loop only opens links.. I'm interested in how to add, somethin like this, to collect some data:

# wait to open link
time.sleep(3) 
# handle new window
newtab = driver.current_window_handle
driver.switch_to_window(newtab)
# collecting data and print data
date = driver.find_elements_by_class_name("mstat-date")
for d in date:
    print(d.text)
# Some code to close newtab?
????

How do I implement this throughout the for loop.. In other words want to go in every link and collect some data.. Whether it is possible? Some suggestions or examples code?


1 Answers

You can try below code that allow to handle each window with match results in a loop:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.rezultati.com/kosarka/filipini/kup/")

list_of_links = driver.find_elements_by_css_selector(".cell_ad.time")
cur_win = driver.current_window_handle # get current/main window

for link in list_of_links:
    link.click()
    driver.switch_to_window([win for win in driver.window_handles if win !=cur_win][0]) # switch to new window
    date = driver.find_elements_by_class_name("mstat-date")
    for d in date:
        print(d.text)
    driver.close() # close new window
    driver.switch_to_window(cur_win) # switch back to main window
like image 94
Andersson Avatar answered Sep 14 '25 16:09

Andersson