1

使用 PhantomJS 浏览器执行 karma runner 时,会产生以下错误:

*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)>`

业力.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
  • 业力版本:0.10.2
  • PhantomJS 版本:1.9
4

1 回答 1

0

失败的根本原因是 PhantomJS 是用旧版本的 JavaScript 构建的,缺少“绑定”实现(为什么 PhantomJS 没有 Function.prototype.bind

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

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

很抱歉,从我提供的问题信息中,无法推断问题原因。

于 2014-06-28T10:47:14.910 回答