更改事件不会被 poltergeist 触发

change event not getting triggered with poltergeist

我有 2 个下拉菜单,第一个下拉菜单的变化预填充了第二个下拉菜单(已在 backbone 中完成)。

  events: ->
    'change #client_id': 'selectedClientChange'

  selectedClientChange: (ev) ->
    @populateGroups $(ev.target.selectedOptions).val()

编写了与 poltergeist 相同的水豚规范,但由于某种原因未触发更改事件,规范失败。

scenario 'it should populate the groups automatically', js: true, speed: :slow do
  click_link 'New Item'
  find('#name').set('Sample Item')
  page.execute_script("$('#client_id').val('testing').trigger('change')")
  select "#{client.name}", from: "client_id"
  groups = find('#group_id').all('option').collect(&:text)
  expect(groups.count).to eq 1
  expect(groups).to include pg.name
end

谁能告诉我如何解决这个问题。

如果没有有关您收到的错误的详细信息,这主要是猜测 - 您可能在 select 的更改事件实际更新它们之前获取了这些组。您最好使用 have_select 匹配器,因为它会重试一段时间以查看字段是否更改以符合要求

select "#{client.name}", from: "client_id"
expect(page).to have_select('group_id', options: [pg.name])

啊对不起大家。我发现我在这里 https://github.com/teampoltergeist/poltergeist/issues/204 发现了 poltergeist 的问题。非常感谢!