RSpec+;水豚:如何测试引导进度条

RSpec+;水豚:如何测试引导进度条,rspec,capybara,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> 我感谢你能提供的任何帮助

我正在使用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>

我感谢你能提供的任何帮助


谢谢

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

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')
然而,这不会使用水豚内置的等待方法。如果使用等待方法很重要,则应执行以下操作:

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

你也可以做一些很酷的事情,比如:

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

“测试不同的Aria属性”是什么意思?你是在问你应该测试什么,还是在寻找帮助来实现属性的特定测试(例如检查属性值)?谢谢Justin。是的,我只需要知道如何测试不同的属性值。我需要测试以确保aria valuenow和aria valuemax设置为特定的值。非常好!谢谢你,贾斯汀。非常感谢。