使用Bootstrap创建页面对象gem

时间:2014-06-10 09:12:34

标签: ruby twitter-bootstrap page-object-gem

过去几个月我一直在成功使用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?

1 个答案:

答案 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将使你的测试不那么脆弱。