Angularjs 量角器:PhantomJS中的Polyfill Function.prototype.bind。Can';我不能让它工作,这可能吗?

Angularjs 量角器:PhantomJS中的Polyfill Function.prototype.bind。Can';我不能让它工作,这可能吗?,angularjs,phantomjs,protractor,angularjs-e2e,polyfills,Angularjs,Phantomjs,Protractor,Angularjs E2e,Polyfills,我花了一个下午的时间在这件事上,没有任何进展,我真的开始怀疑这是否可能 我使用带净空的Angular来处理向下滚动时菜单消失的问题。我的测试是用量角器完成的,使用PhantomJS,这就是乐趣的开始 PhantomJS不支持.bind(),Headloom在所有地方都使用它,这意味着我需要填充它。这应该没问题,但我不能让它工作 我认为我的问题是,无论我在哪里运行polyfill函数,PhantomJS和测试页面都已经加载,所以已经太晚了,由于.bind()不可用,Headwoom将无法加载 在加

我花了一个下午的时间在这件事上,没有任何进展,我真的开始怀疑这是否可能

我使用带净空的Angular来处理向下滚动时菜单消失的问题。我的测试是用量角器完成的,使用PhantomJS,这就是乐趣的开始

PhantomJS不支持
.bind()
,Headloom在所有地方都使用它,这意味着我需要填充它。这应该没问题,但我不能让它工作

我认为我的问题是,无论我在哪里运行polyfill函数,PhantomJS和测试页面都已经加载,所以已经太晚了,由于
.bind()
不可用,Headwoom将无法加载


在加载页面之前,有没有办法运行这些方法?我知道我可以通过头部的脚本标签将它们添加到我的应用程序中,但我不希望在整个应用程序中添加只供测试框架使用的内容。

我想我有一个解决方法。(至少试一试,我们会看看它是否工作)你能做的最好的事情就是修补你的phantomJS浏览器,让它支持这种方法。基本上,您应该在每个规范之前运行一个脚本,这样它就可以应用于全局范围,并且可以用于您的规范

只需尝试扩展您的规格配置。以下是一个例子:

...
specs: ['my_phantomjs_bind_patch.js', 'webtests/**/*.js']
...

您不能在实际页面加载之前运行脚本,因为它们是dom树的一部分。您可以做的是:`

window.onload=function(){
//做点什么

}; 首先为什么是幻影?()我知道支持并不理想,但这正是我们正在使用的。我老板的论点主要是,CI上的无头Chrome很难维护(我不知道它到底有多少,我从来没有这样做过),而沙司实验室的成本对于我们目前的预算来说太高了。这就是PhantomJS。你有没有可能提供一些代码或JSFIDLE?我很想看看这里到底发生了什么。这已经是一段很长的时间了(我甚至不再使用角度或量角器),但我想我确实尝试了,但没有成功。如果有人真的尝试了,并且成功了,我会接受你的答案。