Selenium find_element_by_class_name и find_element_by_css_selector не работают

Я очищаю веб-сайт со следующей структурой:

<div class = "cr__stores-list">
  <div class = "cr__stores-item">store1</div>
    <a href = "/stores/store1/">
    <div class = "cr__stores-item-b">
      <div class = "cr__container-name">
        <h3 class = "cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300">
          Store Name
        </h3>
      </div>
     </div>
    </div>
  <div class = "cr__stores-item">store2</div>
    ...
    ...
  <div class = "cr__stores-item">store3</div>
  <div class = "cr__stores-item">store4</div>
</div>

Каждый "div class="cr__stores-item"" внутри "div class="cr__stores-list"" имеет точно такую ​​же структуру. для каждого "div class="cr__stores-item"" я пытаюсь очистить URL-адрес и название магазина внутри тега h3

У меня пока есть следующий код:

    wd = webdriver.Chrome('chromedriver', options=options)
    wd.get('stores_url')        
    element = WebDriverWait(wd, 20).until(EC.presence_of_element_located((By.CLASS_NAME, "cr__stores-list")))
    list_stores_tags = element.find_elements_by_class_name("cr__stores-item")
    for store_tag in list_stores_tags:
        # store_tmp = store_tag.find_element_by_class_name("cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300")
        # store_tmp = store_tag.find_element_by_css_selector('h3.cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300')
        store= store_tmp.text
        url_tmp = store_tag.find_element_by_tag_name("a")
        url = url_tmp.get_attribute('href')

Две прокомментированные строки - это мои попытки получить название магазина. С помощью этого кода я без проблем получаю все URL-адреса каждого магазина. Однако я не могу получить названия магазинов. Ни find_element_by_class_name, ни find_element_by_css_selector не работают, так как в обоих случаях я получаю исключение:

Сообщение: нет такого элемента: невозможно найти элемент: {"метод":"селектор css","селектор":".cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300"} (Информация о сеансе: безголовый хром = 87.0.4280.88)

или

Сообщение: нет такого элемента: невозможно найти элемент: {"метод":"селектор css","селектор":"h3.cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300"} (Информация о сеансе: безголовый хром = 87.0.4280.88)

Что я делаю не так? Любые предложения будут приветствоваться. Спасибо!

Вы неправильно используете find_element_by_css_selector. Попробуйте store_tag.find_element_by_css_selector('h3.cr__container-nam‌​e-title.cr__text--su‌​btitle.cr__textColor‌​--colorDark300'). Обратите внимание на точки вместо пробелов.

user5386938 21.12.2020 16:35

Ах! Вот и все! Спасибо! Я понятия не имел, что это способ писать теги с пробелами;)

Alain 21.12.2020 16:39

Вот как вы используете селекторы CSS для выбора элементов с несколькими классами. См. stackoverflow.com/questions/2554839/….

user5386938 21.12.2020 16:44
Почему в 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
3
409
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы неправильно используете find_element_by_css_selector. Пытаться

store_tag.find_element_by_css_selector('h3.cr__container-name-title.cr__text--subtitle.cr__textColor--colorDark300')

Обратите внимание на точки вместо пробелов.

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