find_element_by_css_selector ('a'). get_attribute ('href') возвращает NoSuchElementException - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь очистить целевой веб-сайт на предмет product_links. Программа должна открыть требуемый URL-адрес в браузере и очистить все ссылки с определенным именем класса. Но по какой-то причине я получаю NoSuchElementException для этого фрагмента кода

links = driver.find_elements_by_class_name("styles__StyledTitleLink-mkgs8k-5")

for link in links:
    self.driver.implicitly_wait(15)
    product_links.append(link.find_element_by_css_selector('a').get_attribute('href'))

Я пробовал распечатать текст в каждой ссылке с помощью link.text в for l oop. Код фактически выбирает необходимые элементы. Но по какой-то причине не удается извлечь URL-адрес href из каждой ссылки. Я не уверен, что делаю неправильно.

Это все сообщение об ошибке

NoSuchElementException: Сообщение: нет такого элемента: Невозможно найти элемент: {"метод": " css selector "," selector ":" a "} (Информация о сеансе: chrome = 83.0.4103.106)

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Ошибка. Кажется, что нет элемента css с 'a', поэтому вам нужно попробовать с другими локаторами идентифицировать элементы. попробуйте с xpath = // a [содержит (text (), ' текст этого элемента ')]

1 голос
/ 21 июня 2020

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

, если вы хотите очистить их , найдите другой общий c класс или найдите все классы со строкой подмножества "StyledTitleLink"

Вот как это сделать с JQuery

Вам следует попробовать и найдите другое решение вашей проблемы

...