下拉列表没有被选中,应该是......为什么?

时间:2015-04-24 12:51:03

标签: ruby ruby-on-rails-4 selenium capybara selectize.js

我正在尝试解决我认为应该正常工作的测试中的错误。我很确定这是一个选择或水豚的错误,但我无法弄清楚原因。

我已经进入了水豚的来源,一切看起来都像是应该的。我不确定如何继续前进。

为了测试这个错误,我已经尽可能地将错误删除到一个小test application。请参阅下面的设置

bugs/show.html.erb

  <select id="select-repo" class="repositories selectized" placeholder="Pick a repository...">
  </select>

  <select id="dropdown1">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
  </select>

  <select id="dropdown2">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
  </select>

bug_spec.rb

feature 'bug' do
  it "spec setup", js: true do
    visit bug_path

    find('div.selectize-input input', match: :first).set('exercism.io')
    select 'Four', from: 'dropdown1' # this is not getting selected
    select 'Four', from: 'dropdown2'

    sleep 2

    expect(page).to have_select('dropdown1', selected: 'Four') # testing that dropdown1 is being selected
  end
end

# note that the javascript to initialize the selectize drop down is in application.js if you want to look at it go to the github application.

上面的测试访问了具有ajax selectize下拉菜单和两个普通select元素的页面。它试图将文本 - &#39; exercism.io&#39; - 在selectize下拉(通常我有另一行实际上模仿按Enter键,但错误发生在该行)然后它继续设置dropdown1和dropdown2的值。我已经进行了测试js: truesleep 2以使ajax工作,因此您可以看到测试运行时实际发生的情况。

问题是无法设置dropdown1的值。当您运行测试并查看发生了什么时,您可以看到它找到了要设置的值,但它并没有实际设置它。它只是移动到下一个选择。

另一个奇怪的事情是如果我改变测试如下,测试通过。所以我很确定它与选择下拉的设置有关。

bug_spec.rb

feature 'bug' do
  it "spec setup", js: true do
    visit bug_path

    select 'Four', from: 'dropdown1' # this is not getting selected
    select 'Four', from: 'dropdown2'
    find('div.selectize-input input', match: :first).set('exercism.io')

    sleep 2

    expect(page).to have_select('dropdown1', selected: 'Four') # testing that dropdown1 is being selected
  end
end

我已经在demo application中复制了这个可以在github上找到的错误。

对不起,如果这很长,我还不确定如何说出这个问题。

请注意,此示例已被删除。在我的实际代码中,我使用代码,人们provided使用capybara和selectize。

1 个答案:

答案 0 :(得分:0)

我在水豚forums上得到了答案。

看起来这是一个浏览器焦点问题,如@tgf所述(link

感谢。