Python Селен: найти элемент по CSS свойствам - PullRequest
2 голосов
/ 09 июля 2020

Привет, сообщество! Это мой первый вопрос, надеюсь, я не нарушаю никаких правил. Любая помощь приветствуется - заранее всем спасибо!

Моя проблема может быть описана следующим образом: я пытаюсь очистить содержимое между двумя последовательными заголовками. Найти первый заголовок довольно просто, так как я знаю его точное название. Однако у меня нет информации о втором последовательном заголовке, кроме того, что он должен иметь одинаковые свойства стиля CSS.

Мой подход состоит в том, чтобы найти следующий элемент с таким же CSS свойства, например тот же " font-size ", et c. Тем не менее, он не работает должным образом.

Это упрощенный, краткий пример того, чего я пытаюсь достичь. К сожалению, мой код всегда будет давать пустые результаты:

##Get the attribute of the first element (header), which I found already##
attr1 = str(element.value_of_css_property("font-size"))

##Get list of items with the same css-property so that I can find the "consecutive element"
elements = driver.find_elements_by_css_selector("*[font-size='"+attr1 +"']")

Поскольку я новичок в программировании, прошу простить меня за ошибки новичка.

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Вместо этого вы можете использовать поиск по xpath. Легче нацеливать элементы, чем использовать css стили или элементы, у которых нет идентификаторов или классов.

Вы можете прочитать больше здесь

1 голос
/ 09 июля 2020

При поиске по свойствам css я обычно делаю что-то вроде следующего:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

css_selection = '[font-size="%s"]' % attribute
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, css_selection)))
element = driver.find_element_by_css_selector(css_selection)

Вам не нужна звездочка, и я думаю, вы используете слишком много кавычек. Строку проще отформатировать, чем объединять. Не уверен, что это решит вашу проблему, так как я не знаю полной информации о проекте, но работает, когда я его использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...