2015-08-19 64 views
1

在我看来,我有一个复选框水豚have_selector不工作

<input type="checkbox" id="modal-checkbox" class="painter-modal-checkbox" data-reactid=".1.1:1.0.0"> 

在我的水豚的代码,我试图用have_selector方法

expect(page).to have_selector("#modal-checkbox") 

这个失败,当我跟踪页面与

print page.html 

我可以证实,我的html代码是存在的, 为什么会出现这种TES t失败。

+0

请发布完整的测试代码和错误日志。 –

回答

1

这通常是因为该字段实际上不可见,因为它是通过CSS隐藏的。使用复选框时,这通常是因为设计需要使用标签来显示复选框的选中状态,而实际复选框处于隐藏状态。要检查是否存在可见性问题,您可以传递可见:false为have_selector,但99%的时间您不应检查不可见项目,因为用户无法看到它们或与它们交互

+0

那么应该用什么来检查隐藏的标签呢?我遇到了这个问题,我想在我的视图测试中检查表单字段(不是集成或特性测试),而是查看我需要的测试,以确保我生成正确的字段,可见或不)。 –

+0

嗯,稍后我会找到答案:将“visible:false”参数添加到has_selector调用中。例如: expect(呈现).to have_selector('input [type =“hidden”]',visible:false) –

+0

@GrantNeufeld正确 - 正如答案中提到的那样 - 但是检查不可见元素的存在是否真的是测试中不良的代码味道。如果用户不可见或不在页面代码中,它对用户有什么不同?您应该测试使其可见的行为或取决于它们隐藏在页面上而不是测试隐藏元素的存在。 –