1

私はそのようなコードを持っています:

total_terms = @driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').length
    if (1...5).include?(total_terms)
      @driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').option(:index, total_terms).select
    else
      @driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').option(:index, (total_terms-2)).select
    end

インデックスを介して値を選択しようとしています。まず、自分の長さを計算してselect_listから選択します。しかし、ブラウザーでは、何も選択されていないことがわかります。私は何を間違えましたか?

4

1 に答える 1

3

あなたのコードはおそらく例外をスローしています。

選択リストにはメソッド長がありません

この線

@driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').length

選択リストにはメソッドがないため、無効ですlength。オプションの数が必要であると仮定するとoptions、選択リストにオプションのコレクションを取得するメソッドを追加する必要があります。

@driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').options.length   

選択肢が 5 つ以下の場合、存在しない選択肢が選択されます

この線

if (1...5).include?(total_terms)
  @driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').option(:index, total_terms).select

指定されたインデックスに何もないため、例外がスローされます。:index ロケータは 0 ベースです。つまり、0 は最初のオプションを意味し、1 は 2 番目のオプションを意味します。これは、2 つのオプションがある場合、存在しない :index => 2 を選択しようとすることを意味します。1を引く必要があります:

if (1...5).include?(total_terms)
  @driver.select_list(:name => 'ctl00$cp$cbRodzajUslugi').option(:index, total_terms-1).select
于 2013-09-06T18:58:32.193 に答える