使用watir和ruby通过索引选择值

使用watir和ruby通过索引选择值,ruby,watir,Ruby,Watir,我有这样的代码: 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.s

我有这样的代码:

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\u list
的长度,然后选择。但在浏览器中,我看到没有选择任何内容。我做错了什么?

您的代码可能正在抛出异常

选择列表没有方法长度

线路

@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 locator是基于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