Selenium и Python для поиска элементов и текста?
Когда я перехожу на определенную веб-страницу, я пытаюсь найти определенный элемент и фрагмент текста:
<span class="Bold Orange Large">0</span>
Это не сработало: (Это дало ошибку составных имен классов...)
elem = browser.find_elements_by_class_name("Bold Orange Large")
Итак, я пробовал это: (но я не уверен, что это сработало, потому что я действительно не понимаю, как правильно сделать селектора css в селене...)
elem = browser.find_elements_by_css_selector("span[class='Bold Orange Large']")
Как только я нахожу элемент span, я хочу найти номер внутри (контент).
num = elem.(what to put here??)
Любая помощь с CSS-селекторами, именами классов и поиском текста элемента будет замечательной!
Спасибо.
О! и моя другая проблема заключается в том, что в ней есть несколько таких точных элементов span, но с разными номерами внутри. Как я могу с этим справиться?
Ответы
Ответ 1
вы хотите: elem.text
, чтобы получить "номер, который внутри".
объяснение:
в вашем примере, elem
- это экземпляр класса webdriver WebElement
(от selenium.webdriver.remote.webelement)
экземпляр WebElement имеет несколько свойств, в том числе:
-
tag_name
-
text
-
size
-
location
-
parent
-
id
.text
свойство содержит "содержимое"
", и моя другая проблема в том, что есть кратное этим точным элементам диапазона.. как я могу с этим справиться?"
пожалуйста, не задавайте несколько вопросов в одном. Это не очень хорошо работает в формате SO.
но в основном используйте find_elements_*
вместо find_element_*
. ваш локатор может затем вернуть список совпадающих экземпляров WebElement
вместо одного экземпляра соответствия... который вы можете фильтровать далее.
Ответ 2
Проблема заключается в том, что имя класса как пробелы заставляет элемент иметь 3 разных класса (разделенных пробелом)
Если вы установите класс Bold-Orange-Large
, то он будет работать как ожидалось с помощью метода elem.text
.