Ошибка при переходе к элементу

Хочу спарсить все напитки с сайта, браузер firefox. Действую по гайду + дорабатываю под свои нужды. Сначала столкнулся с проблемой что не переходит к элементу, так как он за пределами окна и реализовал через какой-то костыль со скроллом(описал, так как может быть из-за него тоже могут возникать проблемы). Теперь же он переходит к первой кнопке "показать далее", но на втором круге уже пишет что он скрыт. Я посмотрел через инспектор и увидел что на сайте действительно скрывается этот элемент, а потом добавляет такой же ещё ниже. Как мне всё-таки пройти через все "показать далее"

(Конечно, есть вариант в адресс ссылки выставить такое значение, чтобы все коктейли отображались сразу, но хочется сделать как-то правильнее)

класс кнопки "посмотреть ещё"

Что происходит после нажатия


from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service


# поиск по классу : driver.find_element(by=by.CLASS_NAME, value="название класса")
def get_source_html(url):
    service = Service('C:\\Users\\Administrator\\PycharmProjects\\PARSING\\geckodriver-v0.34.0-win64\\geckodriver.exe')
    driver = webdriver.Firefox(service=service)

    driver.maximize_window()

    try:
        driver.get(url=url)
        time.sleep(3)
        # element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
        # common-end common-list-state - показаны все коктейли ; common-more common-list-state - посмотреть ещё 20
        while True:
            find_more_element = driver.find_element(By.XPATH, "/html/body/div[9]/div[1]/a[3]")
            js_code = "arguments[0].scrollIntoView();"
            if driver.find_elements(By.CLASS_NAME, "common-end"):
                with open("source-page.html", 'w') as file:
                    file.write(driver.page_source)
            else:
                driver.execute_script(js_code, find_more_element)
                actions = ActionChains(driver)
                actions.move_to_element(find_more_element).click().perform()
                time.sleep(3)
    except Exception as _ex:
        print(_ex)
    finally:
        driver.close()
        driver.quit()


def main():
    get_source_html('https://ru.inshaker.com/cocktails')


if __name__ == '__main__':
    main()```


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