0

次の形式の HTML ページがあります。

   <select id="name_list">
      <optgroup label="env1">
          <option value="comp1">comp1 details</option>
      </optgroup>
      <optgroup label="env2">
          <option value="comp1">comp1 details</option>
      </optgroup> 
   </select>

特に optgroup-env2 内にある value=comp1 のオプションをクリックしようとしています。このパスを指定する方法はありますか? 異なる「optgroup」ノードの下では、両方の「オプション」値がまったく同じであることに注意してください...

どうもありがとう!

4

1 に答える 1

0

他の要素と同様に、optgroup を見つけることができます。次に、そのグループ内でオプションを検索できます。

browser.optgroup(:label =>'env2').option(:value => 'comp1').select

更新- watir-webdriver に上記の動作を妨げるバグがあるようです。

ラベルのロケーターを作成するとき、watir-webdriver は次のメソッドを呼び出します。

def should_use_label_element?
  @selector[:tag_name] != "option"
end

optgroup の場合、これは false を返します。これは、watir が (属性をチェックするのではなく) 関連するラベル要素を探しに行くことを意味します。

一時的な回避策として、css を使用できます。

browser.element(:css => 'optgroup[label="env2"]').option(:value => 'comp1').select

この問題に対してバグが作成されました (問題 219を参照)。

于 2013-09-13T11:18:15.853 に答える