我正在为我的Rails代码库编写测试套件,并尝试使用Capybara单击搜索图标并检查是否显示搜索字段。但是,由于Capybara无法找到CSS元素“search_icon”,测试仍然失败。我尝试过使用click_on()
和find(CSS).click
,但都没有效果。前者返回错误
1)内容搜索点击放大镜使搜索框出现 失败/错误:click_on('search_icon') 水豚:: ElementNotFound: 无法找到链接或按钮“search_icon” #。/ specpec /features/contents/contents_search_spec.rb:13:在'块(2级)中'
而后者返回
1)内容搜索点击放大镜使搜索框出现 失败/错误:找到('#search_icon')。点击 水豚:: ElementNotFound: 无法找到css“#search_icon” #。/ specpec /features/contents/contents_search_spec.rb:13:在'块(2级)中'
这是RSpec desription
scenario "clicking magnifying glass makes search box appear" do
visit contents_path
find("#search_icon").click
#Also tried this:
#click_on('search_icon')
expect(find("#search-form").visible?).to be true
end
试图找到这个元素
<div class="pull-right has-tooltip" data-title="Search" id="search_icon" data-original-title="" title="">
<i class="glyphicons-icon search"></i>
</div>
我的RSpec方案代码是否存在问题,或者我如何找到并点击此元素?
答案 0 :(得分:3)
#click_on是#click_link_or_button的别名,它只会点击&lt; a href = ...&gt;或者&lt; button&gt;元素。你使用#find和#click是正确的方法,但是根据你应用于实际图标的css,div实际上可能有0px的宽度和/或高度 - 这将使它无法点击。而是尝试使用
之类的东西点击实际图标find('#search_icon .search').click
另外 - 如果你使用capybara rspec匹配器,你最终的期望会更好看
expect(page).to have_css('#search_form', visible: true)
只有当你改变了Capybaras默认只找到可见元素时才需要:true