Подтвердить что ты не робот

Xpath: как выбрать опцию на основе свойства text not value?

рассмотрим оба типа:

<select name="garden">
    <option>Flowers</option>
    <option selected="selected">Shrubs</option>
    <option>Trees</option>
    <option selected="selected">Bushes</option>
    <option>Grass</option>
    <option>Dirt</option>
</select>

Является ли @val для фактического указания атрибута value=""?

Является ли @value для указания значения innerText?

например, что произойдет, если <option> не содержит никакого свойства value="". как бы вы это выбрали?

select/option[@value = "Grass"] 

Происходит ли Xpath автоматически игнорировать пробелы для вышеприведенного случая? Следует ли обрезать?

EDIT:

для выбора нескольких параметров это достаточно?

select/option[normalize-space(text())="Grass" or normalize-space(text())="Trees"]
4b9b3361

Ответ 1

Для выбора по текстовому значению вы можете использовать функцию text(). И требуется нормализовать пробелы, потому что они не удаляются по умолчанию. Вот пример:

select/option[normalize-space(text())="Grass"]

@value - значение атрибута "значение"

@val - значение атрибута "val"

normalize-space() - функция возвращает строку аргумента с пробелом, нормализованным путем удаления начального и конечного пробелов и замены последовательностей символов пробела на единое пространство

Ответ 2

Ну, если пробел не является проблемой:

/select/option[.='Grass']

Мне нужно было бы проверить пробелы. Вы всегда можете нормализовать:

/select/option[normalize-space(.)='Grass']