Разбор HTML с использованием Selenium - имя класса содержит пробелы

Я пытаюсь разобрать некоторые HTML с помощью Selenium. Проблема в том, что возникает ошибка, если имя класса содержит пробелы.

Вот тег, который я ищу: <p class="p0 ng-binding">text</p>

Я пробовал эти два варианта:

result.find_element_by_class_name('departure').find_element_by_css_selector('p.p0 ng-binding').text 

result.find_element_by_class_name('departure').find_element_by_class_name('p0 ng-binding').text 

>>> selenium.common.exceptions.InvalidSelectorException: Message: The given selector p0 ng-binding is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Compound class names not permitted

Кто-нибудь может дать мне подсказку?

3 ответа

Решение

p Элемент имеет два класса: p0 а также ng-binding,

Попробуйте этот селектор:

find_element_by_css_selector('p.p0.ng-binding')

Как указал @eee, чтобы проверить несколько классов в селекторе CSS, соедините их точками:

p.p0.ng-binding

Проблема в том, что ng-binding класс не является хорошим выбором, чтобы основывать свой локатор на. Вместо этого проверьте p0 только класс:

p.p0

Эта проблема Сложные имена классов не разрешены, потому что имя класса состоит из нескольких слов, которые можно решить, используя следующие css-селекторы

CssSelector("[class*='p0 ng-binding']"); //or
CssSelector("[class='p0 ng-binding']");

Надеюсь, что это поможет вам. Просьба вернуться, если у вас есть какие-либо вопросы

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