Javascript 直接从CasperJS调用JS方法

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中,它

我正在尝试使用CasperJS测试一个页面,特别是我想对数据模型进行一番测试。假设我有一个叫做taxes的基本函数,我想确保它使用正确的税率。所以我想要一些像:

 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;