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

时间:2013-09-06 18:44:33

标签: 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.select_list(:name => 'ctl00$cp$cbRodzajUslugi').option(:index, (total_terms-2)).select
    end

我试图通过索引选择一些值。首先,我计算select_list的长度,然后选择。但在浏览器中,我发现没有选择任何内容。我做错了什么?

1 个答案:

答案 0 :(得分: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