CasperJS测试ExtJS 4.1应用程序 - Ext.getCmp()总是返回未定义的

时间:2015-12-17 16:39:32

标签: extjs extjs4 phantomjs casperjs

我正在使用capserjs来测试我的ExtJS 4.1应用程序。这就是我对ext.js文件的引用

casperjs test --include=ext-all.js testFile.js

如果我在chrome开发人员工具栏上打开控制台选项卡& type Ext.getCmp('id of component');我得到了组件。

但如果我在我的casperjs测试中做同样的事情,我总是得到未定义。

我最初尝试使用返回Ext.getCmp()的{​​{1}}来获取一个组合框,之后我尝试使用undefined找到文本框,标签,并且每次都返回undefined。

我也尝试使用组件查询,甚至没有用。

我也看了link求助,但我无法产生预期的效果。

Ext.getCmp()
使用injectJs()

.then(function(){

     this.wait(5000, function(){
       this.capture('c:\\temp\\cmb.png');
         console.log('-----' + Ext);
       var sqCombo = Ext.getCmp('country-ddl'); // returns the ComboBox components

       sqCombo.setValue('UK'); // set the value
       sqCombo.fireEvent('select'); // because setValue() doesn't trigger the event
     })

   })

运行脚本后,我在控制台上看到了这个:

    casper.start(baseUrl, function() {
      this.echo("TITLE : ====> " + this.getTitle());
    })
  casper.then(function(){
    var inject = this.page.injectJs('ext-all.js');
    if(inject){
      console.log('injected');
    }else{
      console.log('cant inject');
    }

     console.log('evaluating');
     this.evaluate(function(){
       console.log(Ext);
       var v = Ext.getCmp('shadowUser').text;
       this.echo('++++++++++++++++++++' + v);
     });
  })

1 个答案:

答案 0 :(得分:1)

没有--include=<script>选项。它被称为--includes=<scripts>,但这对您没有帮助,因为它会将extjs注入到无法访问该页面的外部上下文中。

当您需要时,您需要inject Extjs脚本:

casper.then(function(){
    this.page.injectJs('ext-all.js');
    ...
});

如果Extjs已包含在页面中(根据可用的Ext组件判断),那么您不需要注入任何内容。然后,您应该可以从页面上下文中使用它:

.then(function(){
    this.wait(5000, function(){
        this.capture('c:\\temp\\cmb.png');
        console.log('-----' + Ext);

        this.evaluate(function(){
            var sqCombo = Ext.getCmp('country-ddl'); // returns the ComboBox components

            sqCombo.setValue('UK'); // set the value
            sqCombo.fireEvent('select'); // because setValue() doesn't trigger the event
        });
    })
    .wait(5000, function(){
        this.capture('c:\\temp\\cmb2.png');
    });
})

请注意,Ext仅在页面上下文中可用,可通过沙盒evaluate()函数访问。