Как нажать эту кнопку с помощью Selenium?

Как мне нажать все кнопки на моей странице, если их 5 и более? Мне нужно сделать это с помощью Selenium.

Скриншот элемента и исходного кода:

Вот что я пробовал:

find_more_element = driver.find_element(By.CLASS_NAME, 'products-tile__btn')
while True:
    if not driver.find_elements(By.CLASS_NAME, 'products-tile__btn'):
        with open("link_page.html", "w") as file:
            file.write(driver.page_source)
        break

    else:
        actions = ActionChains(driver)
        actions.move_to_element(find_more_element).perform()
        time.sleep(3)

Можете ли вы дать ссылку на реальную страницу?

M.A. 30.05.2024 15:55

конечно samara.docke.ru/facade

Daydream 30.05.2024 16:01

«2024»? Обычно мы не хотим, чтобы вопросы, которые, как ожидается, устареют, вместо того, чтобы поддерживать нашу цель по созданию базы знаний с течением времени. Есть ли причина, по которой вы ожидаете, что этот период продлится сравнительно недолго?

Charles Duffy 30.05.2024 16:19

Когда я захожу в stackoverflow и захожу на любой из вопросов про селен, то обычно та библиотека уже обновлена ​​и код не работает, поэтому я и указал, что это был именно 2024 год.

Daydream 30.05.2024 16:25

в чем проблема? Вы получили ошибку? Покажите это в вопросе (не в комментариях) как текст (а не изображение). Было бы проще, если бы вы создали минимальный рабочий код, который мы могли бы просто скопировать и протестировать.

furas 30.05.2024 20:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
5
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Одна из проблем с этими кнопками заключается в том, что на странице их 10, но видны только 2. Итак, нам нужно захватить все кнопки, пройтись по каждой, проверить, видна ли она, если она видна, затем нажать ее. Код ниже был протестирован и работает.

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

url = 'https://samara.docke.ru/facade/'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)

wait = WebDriverWait(driver, 10)
buttons = wait.until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR, "div.products-tile__more")))

for button in buttons:
    if button.is_displayed():
        button.click()

Спасибо, чатгпт помог мне с этим с 10 попытки) Но всё равно спасибо, хорошее решение

Daydream 31.05.2024 19:39

Другие вопросы по теме