Использование XPATH для идентификации объекта по цвету фона rgb

#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 (возможно, и более ранние версии?) не использует пробел после запятых.