我认为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
答案 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]
会给你第二个元素,而且索引2
,3
,4
等都没有元素。所以每个尝试这些索引会给你nil
元素。