我试图测试一些按钮的视觉状态 - 悬停,单击,焦点 - 并寻找一种方法不复制基本相同casper.then()
一遍又一遍的命令。我想我应该能够在一个简单的循环中做到这一点。虽然循环安装CasperJS“然后()”步骤
我制作了一个(当前)5个按钮的小阵列,并通过它们为每个我想记录的状态添加CasperJS步骤。不幸的是,实际上只执行最后一个步骤。
我已阅读了大量关于循环的帖子,但他们似乎都涉及点击页面上的链接或其他一些与我所寻找的内容不匹配的方案。
也许我只是在密集?下面的代码...
casper.thenOpen('docs/buttons/test.html');
var buttonStyles = [
{ selector: '.grey0', title: 'Button - Grey 0' },
{ selector: '.grey25', title: 'Button - Grey 25' },
{ selector: '.grey50', title: 'Button - Grey 50' },
{ selector: '.grey75', title: 'Button - Grey 75' },
{ selector: '.grey100', title: 'Button - Grey 100' },
];
while (buttonStyles.length > 0) {
buttonStyle = buttonStyles.pop();
casper.then(function(){
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title);
});
casper.then(function(){
this.mouse.move(buttonStyle.selector);
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title + ' - Hover');
});
casper.then(function(){
this.mouse.down(buttonStyle.selector);
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title + ' - Down');
});
}
casper.test.done();
的可能重复[JavaScript的闭包内环路 - 简单实用的例子(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – 2014-09-01 14:25:26