Как выбрать весь класс, который находится над определенным тегом, используя CSS Selector в Selenium + Python? - PullRequest
0 голосов
/ 25 апреля 2019

Здесь я хочу получить все class = "result-row", которые находятся выше тега "h4", а не те, которые находятся ниже тега "h4".

enter image description here

Мой текущий код выбирает все из них:

section = driver.find_element_by_css_selector("[class='rows']")
result_rows = section.find_elements_by_css_selector("li.result-row")

так как я могу получить желаемый результат здесь?

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете попробовать следующий CSS, который использует: не отфильтровывать общих братьев и сестер h4 на основе класса

li.result-row:not(h4.ban ~ li.result-row)

, который может быть упрощен до:

.result-row:not(.ban ~ .result-row)
0 голосов
/ 25 апреля 2019

Если CSS не обязателен, вы можете использовать XPath:

driver.find_element_by_xpath("//h4/previous-sibling::li")
...