2014-10-15 2 views
1

написания тестов с использованием огурца и SitePrism, у меня есть следующий HTML на странице ...Выбор контента в <option></option> тегов

<select name="product_status_id" id="product-status" class="pull-right"> 
    <option value="">Select a Status</option> 
    <option value="1">Active Product</option> 
    <option value="2">Inactive Product</option> 
</select> 

В настоящее время, селектор элементов я поставил для этого выпадающего списка является ...

element :status_active, '#product-status' 

Я первый набор 1-го значения в моем тесте на "активный продукт" ...

And(/^I select the status of Active$/) do 
    @page.product.status_active.select("Active Product") 
end 

А затем проверьте значение, сохраненное в статус «Активный продукт»

And(/^the product values entered should match those which were saved$/) do 
    @page.product.status_active.value.should == "1" 
end 

Однако, если эти значения должны были быть переключен вокруг, с "Active Product" как value="2" и "Inactive Product" как value="1", тест будет не больше быть проверка что поле установлено в значение "Active Product".

Есть ли экземпляр, который я могу написать, который проверяет содержимое между тегами опций?

<option>want to select content here</option> 

Когда я пишу следующее ... The возвращается следующее ...

"Select a Status Active Product Inactive Product” 

Так что метод .text не кажется, что адекватное решение здесь

@page.product.status_active.text.should == “Active Product” 

,

Что можно написать, чтобы выбрать контент между тегами опций?

ответ

1

Если выбрана опция, у нее должен быть выбран следующий атрибут: <option value="1" selected>Active Product</option>, который вы можете использовать в качестве селектора.

Таким образом, вы могли бы найти выбранный вариант, как это: @page.product.status_active.find('option[selected]')

Таким образом, чтобы проверить текст выбранной опции, вы могли бы сделать: @page.product.status_active.find('option[selected]').text.should == “Active Product”


На соответствующую записку, я действительно нашел я делал это так часто, я добавил следующее в свой тестовый набор: class Capybara::Node::Element def selected_option self.find('option[selected]') end end

Это добавляет выбранный элемент к элементам capybara. С этим вы могли бы просто сделать это @page.product.status_active.selected_option.text.should == “Active Product”

+0

Вы человек Мецгер, спасибо кучу! – Ponchooo

0

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

Как только вы найдете css для своего селектора, вы можете использовать текстовый соединитель, чтобы найти необходимый вам параметр. Это также делает некоторые спецификации, которые можно легко прочитать и сохранить.

Здесь используется водосвинку:

page.find ('# продукт-статус опции',: текст => 'Активный продукт').нажмите

Смежные вопросы