web-dev-qa-db-ja.com

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"]
24
h34y

テキスト値で選択するには、text()関数を使用できます。また、スペースはデフォルトで削除されないため、正規化スペースが必要です。次に例を示します。

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

_@value_-「value」属性の値

_@val_-「val」属性の値

normalize-space() --functionは、先頭と末尾の空白を削除し、空白文字のシーケンスを単一のスペースに置き換えることによって正規化された空白を含む引数文字列を返します

28
Ivan Nevostruev

空白が問題ではない場合:

/select/option[.='Grass']

ただし、空白を確認する必要があります。あなたはいつでも正規化することができます:

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