Скребок нажимает на одну и ту же ссылку циклически?

Я написал несколько script в python, используя селен, чтобы скрестить имя и цену разных продуктов с сайта redmart. Моя цель - щелкнуть по каждой категории среди 10 в верхней части главной страницы и проанализировать все продукты, идущие на целевую страницу. Однако, когда нажата категория, браузер находится на вновь открытой странице, поэтому на этом этапе необходимо снова перейти на главную страницу, чтобы щелкнуть другую из 10 ссылок категории. Мой скребок нажимает на ссылку, переходит на целевую страницу, анализирует данные оттуда, возвращается на главную страницу и нажимает на одну и ту же ссылку и делает все остальное снова и снова. Вот script, с которым я пытаюсь:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://redmart.com/bakery")
wait = WebDriverWait(driver, 10)

while True:
    try:
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "li.image-facets-pill")))
        driver.find_element_by_css_selector('img.image-facets-pill-image').click()          
    except:
        break

    for elems in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.productPreview"))):
        name = elems.find_element_by_css_selector('h4[title] a').text
        price = elems.find_element_by_css_selector('span[class^="ProductPrice__"]').text
        print(name, price)

    driver.back()

driver.quit()   

Кстати, я думаю, что нужно настроить блок "try" и "except" в этом script, чтобы получить желаемый результат.

Ответ 1

Вы можете реализовать простой счетчик, который позволит вам перебирать список категорий, как показано ниже:

counter = 0

while True:

    try:
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "li.image-facets-pill")))
        driver.find_elements_by_css_selector('img.image-facets-pill-image')[counter].click()      
        counter += 1    
    except IndexError:
        break  

    for elems in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.productPreview"))):
        name = elems.find_element_by_css_selector('h4[title] a').text
        price = elems.find_element_by_css_selector('span[class^="ProductPrice__"]').text
        print(name, price)

    driver.back()

driver.quit()