过去几个月我一直在成功使用Ruby页面对象gem,但我正在测试的新软件正在使用Bootstrap,因此它变得更难。
例如,我正在尝试从下拉列表中进行选择,这通常很简单,但使用Bootstrap时,驱动程序看不到原始HTML:
<select class="currency-selector" style="display: none;">
<option value="GLOBAL">All</option>
<option selected="" value="GBP">GBP</option>
</select>
所以这不起作用。
select_list(:original_currency, :class => 'currency-selector')
驱动程序可见的是所有Bootstrap生成的代码,看起来更像是这样:
<ul class="dropdown-menu inner selectpicker" role="menu" style="max-height: 164.5px; overflow-y: auto; min-height: 80px;">
<li rel="0">
<li class="selected" rel="1">
<a class="" style="" tabindex="0">
<span class="text">GBP</span>
<i class="glyphicon glyphicon-ok icon-ok check-mark"></i>
</a>
</li>
<li rel="2">
<li rel="3">
</ul>
有没有一个很好的解决这个问题的方法仍然使用页面对象gem或我将被迫更直接地使用selenium?
答案 0 :(得分:0)
您可以使用ID代替类选择器吗?我查看了页面对象gem(因为我使用capybara作为我的选择)并且看起来很简单。
select_list(:original_currency, :id => "currency-list")
接下来,您只需将该ID添加到HTML
即可<select class="currency-selector" style="display: none;" id="currency-list">
<option value="GLOBAL">All</option>
<option selected="" value="GBP">GBP</option>
</select>
你是正确的,引导程序产生了很多,所以我认为ID将使你的测试不那么脆弱。