Как выбрать предыдущего брата с использованием синтаксиса selenium css

EG Как выбрать второй div в этом списке, если все, что у меня есть, это идентификатор третьего?

<div></div>
<div>I want this</div>
<div id="i_know_this"></div>

Это означает, что я мог бы использовать тильду. например css = # i_know_this ~ div, но он выбирает следующий брат, а не предыдущий. Кроме того, селектор:: before не работает.

Ответ 2

Путь выбора CSS не дает вам привилегии для перемещения назад в иерархии DOM, в этом случае вам придется использовать XPath //*[@id='i_know_this']/preceding-sibling::div[1]

Ответ 3

Вы можете использовать библиотеку ax ( ax - постпроцессор CSS).

В этом случае непосредственный предыдущий селектор ax имеет значение ?.

(Это противоположно + в обычном CSS).

Рабочий пример:

div {
height: 36px;
padding: 6px 12px;
line-height: 36px;
}

#i_know_this:hover ? div {
color: rgb(255, 255, 255);
background-color: rgb(255, 0, 0);
}
<div>Ignore me</div>
<div>I want this</div>
<div id="i_know_this">Hover me</div>

<script src="https://rouninmedia.github.io/axe/axe.js"></script>