Ruby Selenium,find_elements可以返回一个元素和nil的数组吗?

时间:2014-02-03 17:59:34

标签: ruby selenium

我认为find_elements不会返回包含元素和nil的数组。看看我在IRB看到的是什么。

irb(main):025:0>  w = $driver.find_elements(:tag_name, 'tr')
=> [#<Selenium::WebDriver::Element:0x77dbee53bb7dc76a id="{2cea6188-1aa3-9045-acbc-c4e7e6b789ee}">, #<Selenium::WebDriver::Element:0x1000c5ad74eacaee id="{79c30952-9be5-3e4e-be0d-1f8c527541ff}">]
irb(main):026:0> w[1]
=> #<Selenium::WebDriver::Element:0x1000c5ad74eacaee id="{79c30952-9be5-3e4e-be0d-1f8c527541ff}">
irb(main):027:0> w[2]
=> nil

发生了什么事? Selenium中的Bug或Ruby中的bug?
ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13] selenium-webdriver 2.39.0

1 个答案:

答案 0 :(得分:2)

w = $driver.find_elements(:tag_name, 'tr')为您提供了Array

  

In Ruby Array indexing starts at 0,如在C或Java中。假定负索引相对于数组的末尾 - 也就是说,索引-1表示数组的最后一个元素,-2是数组中最后一个元素的倒数,依此类推。 / p>

因此,在您的情况下,w是一个大小为 2 的数组。 w[0]会先给你,w[1]会给你第二个元素,而且索引234等都没有元素。所以每个尝试这些索引会给你nil元素。