黄瓜 - 如何编写测试用例来更改表中列出的项目的排序顺序?

时间:2012-01-16 22:36:59

标签: ruby selenium cucumber

我对黄瓜很新,并且已经挂了一个测试用例。

页面上有一个表格列出了一堆产品,其中一个单元格包含了&向下图形 - 这些是用户点击的控件,用于在最终用户可以浏览的目录中向上或向下移动该产品的排序顺序。

如何选择表格中列出的第二个产品,找到它的ID&点击“向上”或向下链接?

这是表格(为了便于阅读而缩短):

<table id="product_container">
 <tr>
   <th>Order Position</th>
 </tr>
 <tr>
   <td><a href="#" class="product_up"   id="product_sku_goes_here">Up</a>
       <a href="#" class="product_down" id="product_sku_goes_here">Down</a>
   </td>
 </tr>
</table>

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

HTML元素的id属性在页面上必须是唯一的:http://www.w3.org/TR/html401/struct/global.html#h-7.5.2

选择产品的最简单方法是获取对其行的引用:

class ProductsTable
  def initialize(driver)
    @driver = driver
  end

  def table
    @driver.find_element(:id, "product_container")
  end

  def products
    table.find_elements(:tag_name, "td").map{|element|
      Products.new(element)
    }
  end
end

class Products
  def initialize(element)
    @elem = element
  end

  def up
    @elem.find_element(:class, "product_up")
  end

  def down
    @elem.find_element(:class, "product_down")
  end
end

driver = Selenium::WebDriver.for :chrome
driver.get "http://link_to_testing_page"
tabl = ProductsTable.new(driver)

推出第一个产品:

tabl.products.first.up.click

down:

tabl.products.first.down.click  

黄瓜步骤定义:

When /^I push product (\d+) (.*)$/ do |product, where|
  product = product.to_i - 1
  tabl.products[product].send(where).click
end