Огурец - Как написать контрольный пример, чтобы изменить порядок сортировки элементов, перечисленных в таблице? - PullRequest
1 голос
/ 17 января 2012

Я новичок в огурце и зациклен на тестовом примере.

На странице есть таблица с перечнем продуктов, одна из ячеек содержит графику вверх и вниз -это элементы управления, на которые пользователь нажимает для перемещения порядка сортировки этого продукта вверх или вниз в каталоге, который может просматривать конечный пользователь.

Как выбрать второй продукт, указанный в таблице, найти его идентификатор& нажмите на ссылку «вверх» или «вниз»?

Вот таблица (сокращенно для удобства чтения):

<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 Ответ

1 голос
/ 16 мая 2013

Атрибут id элемента HTML должен быть уникальным на странице: 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...