Javascript 直接从CasperJS调用JS方法
我正在尝试使用CasperJS测试一个页面,特别是我想对数据模型进行一番测试。假设我有一个叫做taxes的基本函数,我想确保它使用正确的税率。所以我想要一些像:Javascript 直接从CasperJS调用JS方法,javascript,testing,phantomjs,casperjs,Javascript,Testing,Phantomjs,Casperjs,我正在尝试使用CasperJS测试一个页面,特别是我想对数据模型进行一番测试。假设我有一个叫做taxes的基本函数,我想确保它使用正确的税率。所以我想要一些像: this.test.assert(taxes(100, 'Ontario') === 15, "Check ontario tax rate"); 而不是填写一张表格,看看它打印了什么。这个taxes方法存在于全局范围内,因此我可以在任何地方(包括firebug或Chrome中的控制台)非常轻松地执行它。但是在CasperJS中,它
this.test.assert(taxes(100, 'Ontario') === 15, "Check ontario tax rate");
而不是填写一张表格,看看它打印了什么。这个taxes
方法存在于全局范围内,因此我可以在任何地方(包括firebug或Chrome中的控制台)非常轻松地执行它。但是在CasperJS中,它不在正确的范围内(我想?我得到了引用错误:找不到变量:taxes
)
我好像错过了一些简单的事情
TL;DR:如何在CasperJS测试中直接执行页面上的JS位?使用方法。您尝试过使用吗
相关引用:“像使用浏览器控制台一样执行代码。”
大致如下:
casper.evaluate(function(amount, province) {
return taxes(amount, province);
}, {100, 'Ontario'});
如果通过jQuery样式的引用调用该方法,请确保显式包含该库,否则会出现ReferenceError:
var casper = require('casper').create({
clientScripts: ['js/jquery-1.7.2.js']
});
见:
如果在全局范围内隐式调用它(即,纯javascript,而不是,例如,$('taxes')),则可能必须显式地将窗口或文档名称空间前置到引用:
document.querySelector('#taxes').value = taxes_text;
虽然这在理论上确实回答了这个问题,但如果链接断开,这个答案的上下文也会断开。你能在这个答案中说明如何使用这个方法吗,这样即使链接无法解决,它仍然有用?否则它可能会被删除。谢谢,我错过了那个注释,我想我使用的是“范围”作为一个关键字搜索页面上,并没有得到任何结果。
document.querySelector('#taxes').value = taxes_text;