Ruby / Selenium:如何点击在页面上多次出现的特定项目并且没有唯一属性

时间:2015-03-12 14:46:44

标签: ruby angularjs selenium

这是有问题的项目 - 特别是那个小插图:http://screencast.com/t/NMPOM9Ok58q

正如您所看到的,在同一页面中有多个,它们都有相同的类等。

我尝试了几种不同的路线,但我无法成功点击该项目。

我总是想点击该页面上的最后一个(它们的数量是动态的,所以有时它是第二个,有时候它是第6个 - 所以用它来指代它具体数字不起作用)

感谢您的帮助(我的测试是用ruby编写的,使用selenium和testunit)页面本身是使用Angular在html5中编写的。

以下是我尝试过的一些内容以及这些内容的一些变体。

@driver.find_element(:class, "dropdown-toggle")[-1].click
@driver.find_element(:css, "(//*[contains,'a.dropdown-toggle')]").click 
element_present?(:css, "div.dropdown.open > a.dropdown-toggle").click
@driver.find_element(:css, "div.dropdown.open > a.dropdown-toggle").click
@driver.find_elements(:css, "caret")[-1].click
@driver.find_element(:css, "caret:last-of-type").click
@driver.find_element(:css, "div.dropdown.open > a.dropdown-toggle:last-child").click

@driver.find_element(:class, "span1").find_element(:tag_name, "a").click 
^ This one actually is the only one that clicks anything - but it only clicks the first carat.

@links = @driver.find_element(:class, "span1").find_elements(:tag_name, "a")
@links.last.click
^ This one seems promising but produces an 'element not visible' error. Seen here:  http://screencast.com/t/dcN4EZW8UZf

2 个答案:

答案 0 :(得分:1)

尝试使用绿色div上的nth-last-child(2)属性,然后从那里选择下拉项。

答案 1 :(得分:0)

我终于明白了(感谢所有输入)

@driver.find_elements(:css, "div.span1 > div.dropdown > a.dropdown-toggle")[-1].click