Css 选择标记中的内容

Css 选择标记中的内容,css,css-selectors,cucumber,capybara,qa,Css,Css Selectors,Cucumber,Capybara,Qa,使用cucumber和SitePrism编写测试,我在页面上有以下HTML <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

使用cucumber和SitePrism编写测试,我在页面上有以下HTML

<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>
我首先将测试中的第一个值设置为Active Product

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 
但是,如果要切换这些值,活动产品为值=2,非活动产品为值=1,则测试将不再验证字段是否设置为活动产品值

我是否可以编写一个实例来检查选项标记之间的内容

<option>want to select content here</option> 
以下是返回的

"Select a Status Active Product Inactive Product”
因此.text方法在这里似乎不是一个合适的解决方案


可以编写什么来选择选项标记之间的内容

当选择一个选项时,它应该具有如下所示的选定属性:可以用作选择器的活动产品

因此,您可以找到如下所选选项:@page.product.status\u active.find'option[selected]'

因此,要验证所选选项的文本,您需要执行以下操作:@page.product.status\u active.find'option[selected]”。text.should==“active product”

另一方面,我发现自己经常这样做,我在测试套件中添加了以下内容: 类Capybara::Node::Element def所选_选项 self.find'option[selected]' 终止 结束


这将向capybara元素添加选定的_选项。这样,您就可以执行@page.product.status\u active.selected\u option.text.should==“active product”

如果我理解正确,您希望能够仅使用选项标记之间的文本从下拉列表中选择内容

找到选择器的css后,可以使用文本匹配器查找所需的选项。它还提供了一些易于阅读和维护的规范

这里它使用的是水豚:

第页。查找“产品状态选项”:text=>“活动产品”。单击

@page.product.status_active.text.should == “Active Product”
"Select a Status Active Product Inactive Product”