2014-10-17 96 views
1

我正在测试使用RSpec引导程序进度条的页面。我如何测试Div中不同的Aria属性?RSpec +水豚:我如何测试引导程序进度条

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

我很感激您可以提供的任何帮助。

谢谢!

+0

你是什么意思“测试不同的属性咏叹调”是什么意思?你在问你应该测试什么,或者你在寻求帮助来实现对属性的特定测试(例如检查属性值)? – 2014-10-17 18:26:07

+0

谢谢贾斯汀。是的,我只需要知道如何测试不同的属性值。我需要测试以确保aria-valuenow和aria-valuemax设置为特定值。 – 2014-10-17 20:10:41

回答

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') 

然而,将不使用水豚的内置wait方法。如果您使用wait方法是很重要的,你应该做的:

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

工程太棒了!谢谢Justin。非常感激。 – 2014-10-17 20:51:26

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