PhantomJS和Karma,Selector [ng \:model =“query.name”]与任何元素都不匹配

时间:2013-08-28 12:12:20

标签: angularjs phantomjs karma-runner

使用PhantomJS浏览器执行业力转轮时会产生以下错误:

*Selector [ng\:model="query.name"] did not match any elements*. 

使用Chrome执行时,一切正常。 这是应该匹配的行:

`<input size='' style='width:3em;' ng-model="query.name"  ng-change=changeQuery() ng-focus=focus($index) ng-blur=loseFocus($index)>`

karma.conf:

module.exports = function(config) {
config.set({

    basePath: '../..',

    frameworks: ['ng-scenario'],

    plugins : [
        'karma-ng-scenario',
        'karma-chrome-launcher',
        'karma-phantomjs-launcher',
        'karma-junit-reporter'
    ],

    files: [
        'test/webapp/app/e2e/*.js'
    ],

    exclude: [

    ],

    proxies : {
        '/': 'http://localhost:19880'
    },

    reporters: ['progress', 'junit'],

    port: 9876,

    colors: true,

    logLevel: config.LOG_INFO,

    autoWatch: false,

    browsers: [ 'Chrome', 'PhantomJS'],

    captureTimeout: 60000,

    singleRun: false
});
  • NodeJS版本: v0.10.17
  • Karma版本: 0.10.2
  • PhantomJS版本: 1.9

1 个答案:

答案 0 :(得分:0)

失败的根本原因是PhantomJS是使用旧版本的JavaScript构建的,缺少&#34; bind&#34; 实现(Why PhantomJS doesn't have Function.prototype.bind

控制器逻辑使用 currying ,使用bind方法,从而导致页面呈现不正确。我在使用phantomJS浏览器导出渲染页面时发现了这一点。

我从控制器代码中删除了所有绑定方法调用,现在End2end测试正在按预期传递。

我向我提供的有关该问题的信息表示道歉,因此无法推断出问题原因。