【问题标题】:Watir Webdriver counting number of items in a UL listWatir Webdriver 计算 UL 列表中的项目数
【发布时间】:2013-06-05 23:21:10
【问题描述】:

我进行了几次搜索,但找不到合适的答案。基本上我有一个可以有不同长度的无序列表。我想遍历列表,做一些其他的事情,然后回来选择列表中的下一个项目。当我定义循环应该迭代的次数时,我可以做到这一点,因为我知道列表中的项目数量。

但是我不想为每个测试定义这个,我想获取列表中的项目数,然后将其弹出到一个变量中,我可以使用该变量退出循环并执行我想要的下一件事。

HTML 是这样的:

<ul id="PageContent_cat">
  <li class="sel">
    <a target="_self" href="/searchlocation.aspx?c=S1">S1</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S2">S2</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S3">S3</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S4">S4</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S5">S5</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S6">S6</a>
  </li>
  <li>
    <a target="_self" href="/searchlocation.aspx?c=S7">S7</a>
  </li>
</ul>

所以我可以看到列表中有 7 个项目。显然,在 watir 中,我可以使用以下内容:

arr= ie.select_list(:name,'lr').getAllContents.to_a

但不使用 webdriver。

我以为我可以使用“lis”,但我只得到一个十六进制结果:

$bob = browser.ul(:id => "PageContent_cat").lis 放 $bob

谢谢,

保罗

【问题讨论】:

  • 所以,原来我只是使用: $bob = browser.ul(:id => "PageContent_cat").lis.length puts $bob 返回 7。
  • 那是蛮力和丑陋的......见下面亚当的回答

标签: watir watir-webdriver


【解决方案1】:

根据您要收集的信息以及您将其用于何种目的,通常采用以下方式。与其获取一个数字来定义您的迭代然后迭代该次数,不如让它在到达最后一个元素时自然停止:

MyList = browser.ul(:id => "PageContent_cat")

#Scrape links from the UL for visiting
MyList.links.each do |link|
  puts link
  puts link.text
  b.goto(link)
  #etc
end

#Save li items to an array for later processing
MyArray = []

MyList.lis.each do |li|
  puts li.text
  MyArray << li.text
  #etc
end

#Iterate through your array in the same method, to report/visit/etc
MyArray.each do |item|
  puts "I collected something: #{item}"
  b.goto(item)
end #

【讨论】:

  • 你最好使用 collect 来收集 li 文本:MyList.lis.collect { |li | li.text } 提供一个数组
  • 好的,我试试看。我才真正开始这样做,所以对我来说,“丑陋”的路线是我唯一想出的方法。
  • @Paul - 你的方法很有意义,但是 Ruby 擅长为常见目的提供简化的解决方案。就像上面 Alister 对我的建议一样,总有另一种方法可以做事。
【解决方案2】:

puts browser.ul(:id => "PageContent_cat").lis.length

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多