注:这个问题是关于使用水豚1.1.2,而不是最新版本。如何用水豚测试野外可见度?
我有一个隐藏的文本字段和一个使其可见的按钮。
隐藏的文本字段:
<input type="text" name="Franchise Name" id="new_franchise_name" placeholder="Franchise Name" style="display:none;" />
按钮和js事件处理这使得上述领域可见:
<button class="btn btn-medium" id="create_franchise" data-remote="true" >Create New Franchise</button>
$('#create_franchise').click(function(){
$('#new_franchise_name').css('display', 'inline-block');
}
在我的测试中,我有以下几点:
page.all('#new_franchise_name') #=> returns array with text input
Capybara.ignore_hidden_elements = true
page.all('#new_franchise_name') #=> returns empty array as expected
page.find_button('Create New Franchise').click #=> sets the input css "display:inline-block"
page.all('#new_franchise_name') #=> still returns empty array. Should include the text field
我已经探索了其他一些方法,但这似乎是最直接的...除了它不起作用。有什么建议么?
感谢您的提示!确实非常有用的建议。问题是这不会解决我遇到的问题,因为这些预期不会测试元素的可见性。 'input#new_franchise_name'存在与否点击按钮。我也遇到以下错误:'RSpec :: Expectations :: ExpectationNotMetError:expected css“#new_franchise_name”当这些方法应该返回一个布尔值时不返回任何东西'。任何建议 –
@JesseNovotny期望不返回布尔值 - 它们要么成功要么提出错误,这通常是测试中需要的。听起来你已经在某处写了'Capybara.ignore_hidden_elements = false',这在编写测试时是一个很糟糕的想法(虽然自动化是可以的),因为这意味着你不再测试用户能够看到/做什么。我将更新答案以指定所需的可见性,但更好的解决方案是停止更改ignore_hidden_elements的默认值 –
谢谢!那个石头。我的理解是'Capybara.ignore_hidden_elements'默认为false。它目前正在返回false,并且我只设置它在pry中尝试。 –