无法使用Poltergeist和PhantomJS测试Angular UI Typeahead

Die*_*ego 4 ruby-on-rails phantomjs poltergeist bootstrap-typeahead angular-ui-bootstrap

我在测试我的输入输入时遇到问题.我正在使用Rails,RSpec,Capybara,Angular UI 0.10,AngularJS,Poltergeist.这是我的测试:

create(:user, name: "Test User")
fill_in 'User', with: "Test"
find('#delegations').find('li.active').click
Run Code Online (Sandbox Code Playgroud)

如果我使用Chrome驱动程序运行它,它会成功运行.但是,当使用Poltergeist运行时,虽然服务器收到请求并相应地返回用户,但未显示建议​​框.

我认为这fill_inblur在场上触发,使得盒子消失.我曾经Capybara::Screenshot看过是否有任何建议出现,但没有.输入字段甚至没有得到焦点.

Die*_*ego 10

我发现它真的是因为Poltergeist触发了blurin fill_in.在填写预先输入字段之前,我所要做的就是执行以下脚本:

page.execute_script "$('input[typeahead]').unbind('blur')"
Run Code Online (Sandbox Code Playgroud)

这样,UI Typeahead的blur事件不会被调用,并且它认为它具有焦点在该字段上,相应地呈现建议框.

如果您不使用JQuery,此脚本适用于AngularJS:

elements = document.getElementsByTagName('input');
for (var i = 0; i < elements.length; i++) {
  if (elements[i].hasAttribute('typeahead')) {
    angular.element(elements[i]).unbind('blur');
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 你是一个救星.今天早上我正在努力解决同样的问题.如果我们一起入狱,我会保护你. (5认同)