Ruby on rails 不可能用恶鬼和幻影测试有角度的UI类型

Ruby on rails 不可能用恶鬼和幻影测试有角度的UI类型,ruby-on-rails,phantomjs,angular-ui-bootstrap,bootstrap-typeahead,poltergeist,Ruby On Rails,Phantomjs,Angular Ui Bootstrap,Bootstrap Typeahead,Poltergeist,我在测试typeahead输入时遇到问题。我使用的是Rails、RSpec、水豚、AngularUI0.10、AngularJS、恶鬼。这是我的测试: create(:user, name: "Test User") fill_in 'User', with: "Test" find('#delegations').find('li.active').click 如果我使用Chrome驱动程序运行它,它将成功运行。但是,当使用Poltergeist运行时,建议框不会显示,尽管服务器收到请求并相

我在测试typeahead输入时遇到问题。我使用的是Rails、RSpec、水豚、AngularUI0.10、AngularJS、恶鬼。这是我的测试:

create(:user, name: "Test User")
fill_in 'User', with: "Test"
find('#delegations').find('li.active').click
如果我使用Chrome驱动程序运行它,它将成功运行。但是,当使用Poltergeist运行时,建议框不会显示,尽管服务器收到请求并相应地返回用户


我认为
fill_in
正在触发字段上的
blur
,使框消失。我使用
Capybara::Screenshot
查看是否有任何建议出现,但没有。输入字段甚至没有获得焦点。

我发现这确实是因为Poltergeist触发了
填充中的
模糊。我所要做的就是,在填充typeahead字段之前,执行以下脚本:

page.execute_script "$('input[typeahead]').unbind('blur')"
这样,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');
  }
}
elements=document.getElementsByTagName('input');
对于(var i=0;i
你是救命恩人。今天早上,我正为同一个问题苦苦挣扎。如果我们一起坐牢,我会保护你。谢谢你的提问和回答。这让我头疼。如果你的肥皂掉了,我也会把我的肥皂给你。很棒的东西。为了让未来的搜索者清楚,这种技术在Twitter Typeahead上有效:我相信Angular Typeahead就是使用这种技术的。