Xpath:如何根据文本而非value属性选择一个选项?

时间:2009-10-10 22:25:45

标签: xpath

考虑两种类型:

<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是否会自动忽略上述情况的空格?它应该被修剪吗?

编辑:

选择多个选项就足够了吗?

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

2 个答案:

答案 0 :(得分:27)

要按文字值选择,您可以使用text()功能。并且需要规范化空格,因为默认情况下不会删除它们。这是一个例子:

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

@value - “值”属性的值

@val - “val”属性的值

normalize-space() - 函数返回带有空格的参数字符串,通过剥离前导和尾随空格并用空格替换空白字符序列

答案 1 :(得分:12)

好吧,如果空格不是问题:

/select/option[.='Grass']
但是,我需要检查重新空格。你总是可以规范化:

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