#html #css #xpath
#HTML #css — код #xpath
Вопрос:
У меня есть таблица с несколькими разделениями внутри нее, некоторые из этих разделов идентичны во всех отношениях, кроме цвета фона! Если я хочу выбрать div исключительно на основе его цвета фона, как я могу это сделать? HTML-код объектов выглядит следующим образом: —
<div class="fc-event fc-event-hori fc-event-draggable fc-event-start fc-event-end ui-draggable" style="position: absolute; left: 3px; background-color: rgb(255, 92, 51); border-color: rgb(255, 92, 51); width: 160px; top: 469px; -moz-user-select: none;" unselectable="on">
<div class="fc-event-inner">
<span class="fc-event-title">My Event</span>
</div>
<div class="ui-resizable-handle ui-resizable-e"/>
</div>
Остальные выглядят одинаково, но rgb отличается.
Базовый XPATH следующим образом нацелен на него напрямую: —
.//*[@id='calendar']/div/div/div/div[5]/div[1]
И я могу изменить его следующим образом, чтобы выбрать их все, которые содержат тест «Мое событие».
.//*[@id='calendar']/div/div/div/div/div/*[text()='My Event']/..
Но когда я пытаюсь сделать это, чтобы выбрать тот, у которого есть определенная настройка стиля, это не работает, любые предложения с благодарностью приветствуются, я предполагаю, что я неправильно определяю часть стиля…
.//*[@id='calendar']/div/div/div/div[@style="background-color: rgb(255, 92, 51)"]
Я даже попытался просто вернуть его обратно и попытаться выделить что-либо в правильном стиле (так как ничто другое на странице не имеет такого же цвета фона, со следующим, но по-прежнему без кубиков…
.//*[@style="background-color: rgb(255, 92, 51)"]
Ответ №1:
Вы можете использовать contains()
функцию для частичного сопоставления style
значения атрибута, например :
//div[contains(@style,'background-color: rgb(255, 92, 51)')]
Комментарии:
1. Конечно!! Содержит!! Почему я об этом не подумал! Приветствие работает очаровательно!
Ответ №2:
Надеюсь, чтобы спасти кого-то еще от нескольких седых волос, пробелы после запятых важны! Когда я попробовал rgb(255,92,51)
, div не был найден, но rgb(255, 92, 51)
нашел div.
/div[содержит(@style,’color: rgb(255,92,51)’)]
не удалось найти div.
/div[содержит(@style,’цвет: rgb(255, 92, 51)’)]
нашел div.
Ответ №3:
Я знаю, что этот пост устарел и все такое, но если вам нужна совместимость между браузерами, IE11 (возможно, и более ранние версии?) не использует пробел после запятых.