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 表示第二个选项,依此类推。这意味着当有两个选项时,您将尝试选择 :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 回答