Используя selenium xpath, чтобы щелкнуть ссылку href, не работает

я пытаюсь получить xpath этого, чтобы щелкнуть ссылку href

<a href = "/film/ah-fei-jing-juen/" class = "frame has-menu" data-original-title = "Days of Being Wild (1990)">

мой код до сих пор

driver.find_element(By.XPATH, "/html/body/div[2]/div/div/section/ul/li[1]/div/div/a").click

и я также пытался использовать элемент поиска по идентификатору. оцените любую помощь спасибо!

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Используйте это выражение XPATH:

(//ul[contains(@class,'poster-list -p70 -grid film-list clear')]//following::span[@class='overlay'])[1]

Примечание. В приведенном выше выражении в конце [1] указан первый фильм слева вверху. Если вы хотите найти второй фильм (элемент), просто измените его на [2] и так далее.

Полный рабочий код:

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://letterboxd.com/a2vre/films/by/rated-date/")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "(//ul[contains(@class,'poster-list -p70 -grid film-list clear')]//following::span[@class='overlay'])[1]"))).click()

Импорт:

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

я получаю нет такого элемента для обоих, но веб-страница все еще загружается. idk, если это поможет, но ссылка появляется только при наведении курсора на изображение.

user21725803 25.04.2023 17:13

Можете ли вы поделиться URL-адресом, если он общедоступен?

Shawn 25.04.2023 17:17

ага! вот адрес letterboxd.com/a2vre/films/by/rated-date я пытаюсь нажать на первый фильм слева, дни дикости (1990)

user21725803 25.04.2023 17:18

Я обновил XPATH и код в ответе. Попробуйте последний код. Это не приведет к странице 2. Дайте мне знать, если это работает нормально.

Shawn 25.04.2023 18:21

я только что попробовал новый код, который вы добавили, и он наконец работает! Спасибо большое! Я потратил так много времени на это

user21725803 25.04.2023 18:25

Чтобы найти элемент с помощью href, вы можете попробовать этот xpath:

driver.find_element(By.XPATH, "//a[@href='/film/ah-fei-jing-juen/']").click

Возможно, вы захотите добавить стратегию ожидания перед этим вызовом, иначе элемента может не быть там к тому времени, когда вы его вызвали selenium-python.readthedocs.io/waits.html

levangode 25.04.2023 17:58

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