我正在casperjs中进行一些单元测试而且卡住了:如何从测试本身包含依赖文件?包含的javascript文件可能只是一堆函数,并没有声明任何接口(module.exports = ... etc).
我知道我可以从命令行中包含
$ casperjs test --include=./my-mock.js mytest.js
但是我怎样才能包含测试本身的文件?
将以下内容放在顶部对我来说不起作用... my_mock未定义
casper.options.clientScripts = ["./my-mock.js"]; //push() does not help either
//mytest.js is below
// ------------------------------------------
casper.test.begin('ajax mock test', function suite(test) {
my_mock.setFetchedData("bla");
my_mock.doRequest();
test.assertEquals( ......);
test.done();
});
// ------------------------------------------
Run Code Online (Sandbox Code Playgroud)
使用phantomjs版本1.9.1的CasperJS版本1.1.0-DEV
我有一个很长的CasperJS脚本.当我运行它时,我得到:
phantomjs file.js SyntaxError: Parse error
有没有办法获得有关错误的更多信息.至少一个行号?或任何暗示?
我用phantomjs运行以下脚本:
var casper = require('casper').create();
var url = 'https://itunesconnect.apple.com/itc/static/login?view=1&path=%2FWebObjects%2FiTunesConnect.woa%3F'
casper.on("page.error", function(msg, trace) {
this.echo("Error: " + msg, "ERROR");
this.echo("file: " + trace[0].file, "WARNING");
this.echo("line: " + trace[0].line, "WARNING");
this.echo("function: " + trace[0]["function"], "WARNING");
errors.push(msg);
});
casper.start(url, function(){
casper.wait(7000, function(){
// casper.echo(casper.getHTML());
})
})
casper.run(function() {
if (errors.length > 0) {
this.echo(errors.length + ' Javascript errors found', "WARNING");
} else {
this.echo(errors.length + ' Javascript errors found', "INFO");
}
casper.exit();
});
Run Code Online (Sandbox Code Playgroud)
直到几天前,我才能访问加载包含2个表单字段的iframe的页面,以允许用户登录.
现在我收到以下错误:
Error: Error: undefined is not a constructor (evaluating …Run Code Online (Sandbox Code Playgroud) 我正在自动访问网站以从中收集数据.不幸的是,如果屏幕太小,该页面会检测到屏幕尺寸并且不会给我所需的页面.从非交互式上下文(IIS Web应用程序)运行脚本时,Screen对象似乎返回1024x768像素的大小.即使我将视口大小设置为1300x1000像素,这会影响屏幕截图,但不会影响网页的JavaScript.
我怎么能告诉PhantomJS或CasperJS(我使用后者但是使用前者)在页面的JavaScript中为Screen对象返回不同的值?
编辑:这是CasperJS,而不是PhantomJS,所以它不是重复的.
我正在尝试使用CasperJS测试页面,特别是我想要将数据模型捅一堆.假设我有一个称为税收的基本功能,我想确保它使用正确的税率.所以我想要像:
this.test.assert(taxes(100, 'Ontario') === 15, "Check ontario tax rate");
Run Code Online (Sandbox Code Playgroud)
而不是填写表格并查看它打印的内容.该taxes方法存在于全局范围内,因此我可以从任何地方(包括来自firebug或Chrome中的控制台)轻松地执行它.但是,在CasperJS内部工作并不是合适的范围(我想?我得到了)ReferenceError: Can't find variable: taxes.
好像我错过了一些简单的东西.
TL; DR:如何在CasperJS测试中直接执行JS的页面位?
有谁知道我遇到了怎么样
[warning] [phantom] Failed injecting %s client side.
Failed injecting includes/jquery-1.10.2.min.js client side
Run Code Online (Sandbox Code Playgroud)
当我包括在内
'includes/jquery-1.10.2.min.js'
Run Code Online (Sandbox Code Playgroud)
在Casper构造函数中.有人在这里发布了一个类似的问题:https://groups.google.com/forum/#!msg/casperjs/hY4ziaoXIEE/YFi8Sj4JysMJ,但我不明白他们如何在他们的解决方案中加入了casper.evaluate():
casper.then( function() {
this.evaluate(function($) {
console.log($('title').text());
}
});
Run Code Online (Sandbox Code Playgroud) 我已经设法在我的计算机上构建和运行脚本.
如果我希望它在服务器上运行怎么办?我希望能够将请求发送到服务器并使用CasperJS处理它们.
我想在常规的Web服务器上,这样的事情是可能的.
在亚马逊的EC2上有可能吗?
有没有其他Web服务器托管解决方案允许这样的事情?
这与视口无关.视口没问题.一个是屏幕的视口大小,宽度和高度,另一个是图形界面浏览器(窗口),当你运行casperjs test.js --engine = slimerjs时会打开它.
当我运行casperjs test.js --engine = slimerjs时,浏览器打开是正常的,对于测试目的非常有用.但是当我停止测试并希望做更大的事情时,我不希望浏览器窗口打开10次或100次.
我已经阅读了一段时间,在文档,谷歌或这里找不到任何内容.
如果这是可能的,抛出命令,我将非常感激.非常感谢你.
casperjs ×10
phantomjs ×6
javascript ×5
amazon-ec2 ×1
debugging ×1
jquery ×1
screen-size ×1
slimerjs ×1
syntax-error ×1
testing ×1