RSpec + Capybara:我如何测试Bootstrap进度条

时间:2014-10-17 15:14:58

标签: rspec capybara

我正在使用RSpec测试具有引导进度条的页面。如何在Div中测试不同的Aria属性?

<div class="progress-bar progress-bar-success" 
    role="progressbar"  
    aria-valuenow="40"  
    aria-valuemin="0"  
    aria-valuemax="100"  
    style="width: 40%"> 
</div>

感谢您提供的任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用[]方法获取元素的属性值。例如:

find('div.progress-bar')['aria-valuenow']
#=> "40"
find('div.progress-bar')['aria-valuemax']
#=> "100"

您可以通过执行以下操作来测试值:

expect(find('div.progress-bar')['aria-valuenow']).to eq('40')
expect(find('div.progress-bar')['aria-valuemax']).to eq('100')

然而,这不会使用Capybara的内置等待方法。如果你使用wait方法很重要,你应该这样做:

expect(page).to have_css('div.progress-bar[aria-valuenow="40"]')
expect(page).to have_css('div.progress-bar[aria-valuemax="100"]')

答案 1 :(得分:0)

你也可以做这样的酷事:

it 'reports the status of dropdowns (expanded/collapsed) to non-visual agents', js: true do
  within '#sign_in_panel' do
    expect {
      click_link 'Sign in'
    }.to change { find('a.dropdown-toggle')['aria-expanded'] }.from('false').to 'true'
  end
end