Как узнать url новых открытых окон selenium-а?

Всем добрый день. Есть скрипт на Python, который переходит на эту страницу https://www.flashscore.ru/ и с помощью Selenium жмет на каждый матч и выводит ссылку от этого матча. Time.sleep для того, чтобы js на странице успевал загрузиться. Проблема в том, что при нажатии на матч, открывается не новая вкладка, а новое окно браузера, selenium этого нового окна не видит, он всё еще на первоначальной странице https://www.flashscore.ru/ и получается что выводится ссылка изначальной страницы сайта, но не от матча. Как можно брать ссылку с каждого матча? С помощью Selenium или без него? Заранее спасибо. Код:

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://www.flashscore.ru/')
time.sleep(13)

for channel in driver.find_elements_by_css_selector(".event__match.event__match--scheduled.event__match--oneLine"):
    channel.click()
    time.sleep(13)

    link = driver.current_url
    print(link)

Вывод:

https://www.flashscore.ru/
https://www.flashscore.ru/
https://www.flashscore.ru/
https://www.flashscore.ru/
https://www.flashscore.ru/
...
...
https://www.flashscore.ru/

А должны быть ссылки от каждого матча в том порядке, в каком Selenium нажимает (т.е. по порядку):

https://www.flashscore.ru/match/lUKXoAEo/#match-summary
https://www.flashscore.ru/match/OnDpq8b4/#match-summary
https://www.flashscore.ru/match/llD7mNQ3/#match-summary
...

Ответы (1 шт):

Автор решения: Александр

к сожалению, этот метод работает относительно медленно, т.к. каждый раз приходится загружать данные новооткрытого окна. я попробовал немного сократить временные затраты с помощью driver.set_page_load_timeout(0.5) Конечно, было бы намного удобнее, если бы можно было бы получить ссылки из html сайта, а не при переходе

import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException


driver = webdriver.Chrome()
driver.get('https://www.flashscore.ru/')
time.sleep(3)

arr = driver.find_elements_by_css_selector(
    ".event__match.event__match--scheduled.event__match--oneLine"
)


# optional (if you are not satisfied with the download speed)
driver.set_page_load_timeout(0.5)


for channel in arr:
    try:
        channel.click()
    except TimeoutException:
        print("data not received. need more time in driver.set_page_load_timeout")
        continue

    driver.switch_to.window(driver.window_handles[arr.index(channel)+1])

    link = driver.current_url
    print(link)
    driver.switch_to.window(driver.window_handles[0])
→ Ссылка