找不到带水豚的选择框

时间:2014-11-07 13:17:36

标签: ruby-on-rails ruby rspec capybara capybara-webkit

在我的规范中我有

select call_status.name, from: 'call_status_id'

当我在此命令之前或之后执行save_and_open_page时,有

<select class="form-control" id="call_status_id" name="call[status_id]">

但是当我运行这个测试时,我有

Failure/Error: select call_status.name, from: 'call_status_id'
     Capybara::ElementNotFound:
       Unable to find select box "call_status_id"

我也试过

select call_status.name, from: '#call_status_id'

select call_status.name, from: 'Call Status Id'

select call_status.name, from: 'Call Status'

但是我得到了同样的错误。

4 个答案:

答案 0 :(得分:2)

尝试将您的选择包装在within块中?

within('//divname') do
  select call_status.name, from: '#call_status_id'
end

我无法告诉您代码无法正常工作的原因 - 我认为您在运行时100%确定页面上存在ID - 但这可能会为您提供解决方法;在类似的情况下,它对我有用。

答案 1 :(得分:1)

Semantic-UI 下拉列表组件出现问题,该组件使用选择 html组件并设法使用visible = false解决,如下所示:

select 'Male', from: :user_gender, visible: false

答案 2 :(得分:0)

您可以在支持文件夹e.i features / support / world.rb下创建一个帮助程序 将此方法添加到该文件中:

def select_from_chosen(item_text, options)
    page.execute_script("
      $('##{options[:from]} option').filter(function () {
        return $(this).text() == '#{item_text}';
      })[0].selected = true;
      $('##{options[:from]}').trigger('liszt:updated');"
    )
  end

现在您可以在步骤定义中使用此方法,如下所示:

select_from_chosen('Select call status',from: 'call_status_id') 

我希望这会有所帮助。

答案 3 :(得分:0)

使用标签文本值。在下面的示例中,您应该使用select call_status.name, from: 'Call Status'

<label>Call Status</label>
<select class="form-control" id="call_status_id" name="call[status_id]">