验证水豚是否有任何不同的菜单项
Validating is there any different menu item with capybara
我会努力改进问题。
如何验证菜单中是否包含不同的项目:GAR?
我在下面使用它仍然没有用
page.all('select#tbm2').map(&:value).should == %w(Regras, GAR Regras, GAE Log Processamentos GAR/GAE)
<div id="tbm2" class="tb">
<div id="TBH_tbm2" onclick="javascript:showMenu('tbm2','tbm2', true, true)" class="tbh">GAR</div>
<div id="TBB_tbm2" class="tbb">
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.3','',''); " class="tbi tbiSel">
<div>
<div class="tbiIcon"><img src="r/std/static/pixel.gif" class="icon icon_config" draggable="false"></div>
</div>
<div>Regras GAR</div>
</div>
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.4','',''); " class="tbi">
<div>
<div class="tbiIcon"><img src="r/std/static/collapse16.gif" class="icon" draggable="false"></div>
</div>
<div>Regras GAE</div>
</div>
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.6','',''); " class="tbi">
<div>
<div class="tbiIcon"><img src="r/std/icons/listini64.png" class="icon" draggable="false"></div>
</div>
<div>Log Processamentos GAR/GAE</div>
</div>
</div>
</div>
</td>
all('select#tbm2')
将查找 ID 为 tbm2
的所有 <select>
个元素,其中在您的 HTML 中有 none 个元素。 .value
也得到一个元素的 value
属性 但你有所有 div
元素没有值。如果您想使用您正在尝试的方法,它将类似于
page.all('#tbm2 .tbi', count: 3).map(&:text).should == ['Regras GAR', 'Regras GAE', 'Log Processamentos GAR/GAE']
另一种选择是使用负正则表达式匹配,例如
page.find('#tbm2').should_not have_css('.tbi', text: /^(?!Regras GAR|Regras GAE|Log Processamentos GAR/GAE)/)
另一种选择是使用可以传递给大多数 Capybara 查找器方法的过滤器块,例如
page.should_not(have_css('#tbm2 .tbi') { |node| ['Regras GAR', 'Regras GAE', 'Log Processamentos GAR/GAE'].none?(node.text) })
注意:我正在使用 should
语法,因为这是你在问题中尝试的,但现在你真的应该切换到 RSpecs expect
语法
我会努力改进问题。 如何验证菜单中是否包含不同的项目:GAR? 我在下面使用它仍然没有用 page.all('select#tbm2').map(&:value).should == %w(Regras, GAR Regras, GAE Log Processamentos GAR/GAE)
<div id="tbm2" class="tb">
<div id="TBH_tbm2" onclick="javascript:showMenu('tbm2','tbm2', true, true)" class="tbh">GAR</div>
<div id="TBB_tbm2" class="tbb">
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.3','',''); " class="tbi tbiSel">
<div>
<div class="tbiIcon"><img src="r/std/static/pixel.gif" class="icon icon_config" draggable="false"></div>
</div>
<div>Regras GAR</div>
</div>
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.4','',''); " class="tbi">
<div>
<div class="tbiIcon"><img src="r/std/static/collapse16.gif" class="icon" draggable="false"></div>
</div>
<div>Regras GAE</div>
</div>
<div onclick="sendEvent(0,event,this,searchImage(this),0,'','1370','Menu','','','.13.6','',''); " class="tbi">
<div>
<div class="tbiIcon"><img src="r/std/icons/listini64.png" class="icon" draggable="false"></div>
</div>
<div>Log Processamentos GAR/GAE</div>
</div>
</div>
</div>
</td>
all('select#tbm2')
将查找 ID 为 tbm2
的所有 <select>
个元素,其中在您的 HTML 中有 none 个元素。 .value
也得到一个元素的 value
属性 但你有所有 div
元素没有值。如果您想使用您正在尝试的方法,它将类似于
page.all('#tbm2 .tbi', count: 3).map(&:text).should == ['Regras GAR', 'Regras GAE', 'Log Processamentos GAR/GAE']
另一种选择是使用负正则表达式匹配,例如
page.find('#tbm2').should_not have_css('.tbi', text: /^(?!Regras GAR|Regras GAE|Log Processamentos GAR/GAE)/)
另一种选择是使用可以传递给大多数 Capybara 查找器方法的过滤器块,例如
page.should_not(have_css('#tbm2 .tbi') { |node| ['Regras GAR', 'Regras GAE', 'Log Processamentos GAR/GAE'].none?(node.text) })
注意:我正在使用 should
语法,因为这是你在问题中尝试的,但现在你真的应该切换到 RSpecs expect
语法