我試圖測試一些按鈕的視覺狀態 - 懸停,單擊,焦點 - 並尋找一種方法不復制基本相同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