Можно найти имя класса с помощью Selenium Python

#python #selenium

Вопрос:

Ниже приведен фрагмент HTML-кода с использованием page_source метода в selenium.

Почему я не могу найти имя класса cell-content cell-colshopCapacity ?

'<div unselectable="on" class="x-grid-cell-inner" style="text-align:left;">Daily</div></td><td class="x-grid-cell x-grid-td x-grid-cell-templatecolumn-1065 x-grid-cell-last x-unselectable "><div unselectable="on" class="x-grid-cell-inner" style="text-align:left;"><span class="cell-content cell-colshopCapacity">101</span></div></td></tr></tbody></table></div></div></div><div class="x-container save x-container-default x-box-layout-ct" style="padding: 5px 15px 18px 9px; width: 907px;"

Использование приведенного ниже возвращает пустой список []

 from selenium import webdriver

driver = webdriver.Chrome(r'path/to/chromedriver')
driver.find_elements_by_class_name('cell-content cell-colshopCapacity')
 

Если я использую driver.page_source в vs-коде, он возвращает HTML-код с веб-страницы, именно так я смог создать приведенный выше фрагмент. Правильно ли я предполагаю, что если driver.page_source возвращает HTML с указанным именем класса, то я смогу найти его, используя приведенное ниже, учитывая, что если бы он был в другом frame , то он не вернул бы имя класса, которое я пытаюсь найти? Или я ошибаюсь в этом предположении?

driver.find_elements_by_class_name('cell-content cell-colshopCapacity')

Комментарии:

1. Я ничего не знаю о selenium/webdriver. Однако, если вы знаете, как получить HTML, я рекомендую вам попробовать BeautifulSoup для навигации по нему

Ответ №1:

имя класса не работает с пробелами в Selenium.

так что попробуйте изменить это на css_selector вместо :

 driver.find_elements_by_css_selector('span.cell-content.cell-colshopCapacity')