Разбор 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']");
Надеюсь, что это поможет вам. Просьба вернуться, если у вас есть какие-либо вопросы