我试图检查一个表单提交在RoR,它在开发和生产工作,但不是当我运行黄瓜自动化测试使用@javascript标记。该观点是这样的:黄瓜+水豚+硒测试失败,试图选择隐藏的单选按钮
<%= form_for @model do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :contact_id, :value => @contact.id %>
<ul id="categories" class="unstyled">
<% @new_categories.each do |priority| %>
<li class="span2 contact" id="category_<%=priority.category.id%>" style="margin:0 20px 20px 0;position:relative; background:white">
<div class="contact-image">
<%= image_tag(priority.category.image, :alt => priority.category.name) %>
<%= f.radio_button(:category_id, priority.category.id, class: 'hidden') %>
</div>
</li>
<% end %>
</ul>
<p>
<%= f.submit 'submit', :id=>"submit_category", :class=>'hide' %></p>
<% end %>
<script type="text/javascript">
$('li').click(function() {
var radio = $(this).find("input[type=radio]");
radio.attr('checked', true);
$('#submit_category').click();
});
</script>
如果我把这样的脚本内循环:
它的工作,但我觉得效率不高。在前一种解决方案中,var radio返回一个对象(通过alert()发现它),但是我对它做出的任何调用(.name,.val(),.innerHTML)都返回undefined。
此外,这是该li元素上点击步骤:
When /^I click on the "(.*?)" category$/ do |category_name|
@category = Category.find_by_name(category_name)
page.find('li', id: "category_#{@category.id}").click
end
该请求确实制成,但如同没有选择的单选按钮在所有,而这一次之后的步骤失败。有任何想法吗?
这似乎与使用$(本)的问题造成的。我也尝试使用$(event.target),但它有相同的问题。 –