Cucumber-如何编写一个测试用例来更改表中列出的项目的排序



我对黄瓜有点陌生,对一个测试用例很感兴趣。

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

我如何选择表中列出的第二个产品,找到它的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>

谢谢你的建议!

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

向下:

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

最新更新