我正在使用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);
});
})
答案 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()
函数访问。