我有这样的代码:
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
的长度,然后选择。但在浏览器中,我发现没有选择任何内容。我做错了什么?
答案 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