Javascript 用coffeescript编写的casperjs测试挂起
最近我尝试使用CoffeeScript进行CasperJS测试。 所以下面的代码不会抛出任何错误,而且每次我在CLI中启动它时都会挂起Javascript 用coffeescript编写的casperjs测试挂起,javascript,testing,coffeescript,casperjs,Javascript,Testing,Coffeescript,Casperjs,最近我尝试使用CoffeeScript进行CasperJS测试。 所以下面的代码不会抛出任何错误,而且每次我在CLI中启动它时都会挂起 casper = require("casper") .create verbose: true, logLevel: "debug" casper_utils = require("utils") colorizer = require("colorizer").create 'Colorizer' common_link =
casper = require("casper")
.create
verbose: true,
logLevel: "debug"
casper_utils = require("utils")
colorizer = require("colorizer").create 'Colorizer'
common_link = "http://0.0.0.0:6543/"
landing_pages = ['g',
'em',
'm1',
'm4',
'mv4',
'mv5',
'mp',
'm2',
'm3',
'rp',
'rc']
reg_hash = '#reg'
reg_modal = '.registration'
pay_hash = '#pay'
pay_modal = '.payment'
checkRegVisibility = ->
@test.assertExists reg_modal
@test.assertVisible reg_modal
@test.assertNotVisible pay_modal
checkPayVisibility = ->
@test.assertExists pay_modal
@test.assertVisible pay_modal
@test.assertNotVisible reg_modal
casper.on 'run.start', ->
@.log 'Casper started'
casper.on 'error', ->
@.log 'error'
casper.on 'http.status.404', ->
@.log '404'
casper.test.begin = ('Initial test', landing_pages.length * 3, suite(test)) ->
landing_pages.forEach (lp, index) ->
casper.start common_link+"?lp="+lp, ->
casper.echo lp
checkRegVisibility()
casper.then common_link+"?lp="+lp+reg_hash, ->
casper.echo lp
checkRegVisibility()
casper.run, ->
test.done()
casper.exit()
另外,是否可以将JS2Coffee与casperjs测试一起使用?您的代码存在多个问题 您定义/覆盖casper.test.begin,但需要调用它。 . 我说的是套房。 casper.test.begin执行是异步的,因此在末尾调用casper.exit将在casper.test.begin执行完成之前退出整个脚本。
更新和重写的版本
var common_link = "http://0.0.0.0:6543/";
var landing_pages = ['gen',
'em2',
'm01',
'm0v4',
'm1v4',
'm_v5',
'mo4p',
'm2',
'm03',
're',
'rec'];
var reg_hash = '#register';
var reg_modal = '.modal.registration';
var pay_hash = '#payment';
var pay_modal = '.modal.payment';
function checkRegVisibility() {
casper.test.assertExists(reg_modal, 'reg form exists');
casper.test.assertVisible(reg_modal, 'reg form is visible');
casper.test.assertExists('#registration-form input[name="email"]', 'email input exists');
casper.test.assertExists('#registration-form input[name="password"]', 'password input exists');
casper.test.assertExists('#registration-form input[name="password_confirm"]', 'password confirmation input exists');
casper.test.assertExists('#registration-form input[type="checkbox"]', 'checkbox is present');
if (casper.evaluate(function() {return document.querySelector('#registration-form input[type="checkbox"]').checked;}))
{
casper.echo('checkbox is checked');
} else {
casper.echo('checkbox is unchecked');
}
casper.test.assertExists('#registration-form input[type="checkbox"]', 'submit is present');
casper.test.assertNotVisible(pay_modal, 'payment form isn\'t visible');
};
function checkPayVisibility() {
casper.test.assertExists(pay_modal);
casper.test.assertVisible(pay_modal);
casper.test.assertNotVisible(reg_modal);
};
casper.test.begin('Initial script', landing_pages * 6, function suite(test) {
casper.start();
casper.each(Object.keys(landing_pages), function(casper, land_page) {
this.thenOpen(common_link+"?lp="+land_page+reg_hash, function() {
casper.echo(landing_pages[land_page]+reg_hash);
checkRegVisibility();
});
this.thenOpen(common_link+"?lp="+land_page+pay_hash, function() {
casper.echo(landing_pages[land_page]+pay_hash);
checkPayVisibility();
});
});
casper.run(function() {
test.done();
});
});
事实上,我将脚本重写为js,但仍然没有幸调试它。F.E:casper.test.开始“初始脚本”,登陆页面长度*6,函数套件测试{-这里我假设大约要做10个测试,但在控制台中,每次它都会返回我1个测试套件失败。你可以问一个新问题。好的,我已经设法解决了它。1-删除了前3行变量;2-使用了casper.each;3-删除了casper.exit我不明白为什么要使用casper.each。你可以用你的固定代码提供你自己的答案,但请记住不要你的问题必须有道理。