使用黄瓜和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>
目前,我为此下拉列表设置的元素选择器是......
element :status_active, '#product-status'
我首先将测试中的第一个值设置为&#34; Active Product&#34; ...
And(/^I select the status of Active$/) do
@page.product.status_active.select("Active Product")
end
然后验证保存的值是&#34; Active Product&#34;
的状态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>
当我写下以下内容时......
@page.product.status_active.text.should == “Active Product”
返回以下内容......
"Select a Status Active Product Inactive Product”
所以.text
方法在这里似乎不是一个合适的解决方案。
可以写什么来选择选项标签之间的内容?
答案 0 :(得分: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
这会为pickybara元素添加selected_option。有了这个,你可以这样做@page.product.status_active.selected_option.text.should == “Active Product”
答案 1 :(得分:0)
如果我理解正确,您希望能够仅使用选项标签之间的文本从下拉列表中选择内容。
找到选择器的css后,您可以使用文本匹配器找到所需的选项。它还使一些规范易于阅读和维护。
这里使用的是水豚:
page.find('#product-status option',:text =&gt;'Active Product')。点击