繁体   English   中英

如何获得清单 <li> 元素 <ul> 在Ruby中使用硒?

[英]How to get a list of the <li> elements in an <ul> with Selenium in Ruby?

我正在使用Selenium WebDriver,我需要对第一个帐户项目执行操作(单击),执行某些操作,然后返回并再次对下一个项目重复该过程。 它可能最多可能包含90个帐户项目,因此我试图避免对所有90个帐户进行硬编码。任何想法如何可能遍历帐户列表?

 <ul class="account-list"> <li class="account-item">one item</li> <li class="account-item">two items</li> <li class="account-item">three items</li> </ul> 

您无法遍历Selenium中的元素列表,因为当DOM更改时,它们的对象引用将变为无效(StaleElement异常),但是您可以按索引号进行操作,只要列表的大小不变

elements = @driver.find_elements(css: ".account-item>a")    
elements.size.times do |i|
  @driver.find_element(css: ".account-list > li:nth-child(#{i})>a").click
  # Do something
  @driver.navigate.back
end

您可以通过按其css获取所有元素,然后按以下方式遍历这些元素来做到这一点:

elems = driver.find_elements(:css => ".account-list > li")
url = driver.current_url

for i in 0..elems.size
 # wait until the element loads
 wait.until { driver.find_element(:css => ".account-list > li:nth-child(#{i})")}

 elems[i].click()
 #do your tests
 # ...

 # go back
 driver.navigate.to url     
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM