我希望使用 casperjs 自动点击id='vote'
按钮3次,间隔为5秒,因为我已经编写了以下代码
var casper = require('casper').create();
casper.start('http://www.mysite.com/mypage');
casper.repeat(3, function() {
this.click('#vote');
});
casper.then(function() {
console.log('clicked vote ,and voted successfully , and curernt url is ' + this.getCurrentUrl());
});
casper.run();
但是这只能工作一次,我想做的是以特定的间隔重复循环3次,因为这是一个点击投票按钮的JavaScript ajax帖子,它更新了数据库,是否进行了所有3次点击立刻?我该怎么做才能避免这种情况,并将数据库更新3次?
答案 0 :(得分:2)
以下是使用wait和each的解决方案。下面单击一个按钮,等待3秒,然后遍历每个数组值。循环工作,我无法测试你的点击。
var casper = require('casper').create ({
waitTimeout: 15000,
stepTimeout: 10000,
verbose: true,
viewportSize: {
width: 1400,
height: 768
},
pageSettings: {
"userAgent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.10 (KHTML, like Gecko) Chrome/23.0.1262.0 Safari/537.10',
"loadImages": false,
"webSecurityEnabled": false,
"ignoreSslErrors": true
},
onWaitTimeout: function() {
//throw new Error
},
onStepTimeout: function() {
//throw new Error
}
});
casper.on('remote.message', function(msg) {
console.log('***REMOTE MESSAGE***:', msg);
//throw new Error
});
// array of how many clicks
var clicks = [];
clicks[0] = 'click1';
clicks[1] = 'click2';
clicks[2] = 'click3';
casper.start('http://www.google.com/'); //+++ change the url
// function to click button
casper.Clicker = function () {
this.click('#vote');
this.echo('I just clicked');
return true;
};
//function to wait set time
casper.Waiter = function () {
// adjust wait time between clicks
this.wait(3000, function() {
this.echo('I waited for 3 seconds.');
});
return true;
};
// loop
casper.then(function() {
this.each(clicks, function() {
this.waitFor(function check() {
return this.Clicker();
});
this.waitFor(function check() {
return this.Waiter();
}, function then() {
this.echo('Olayy!');
});
});
});
casper.run();
如果您想要设置点击次数(不使用数组)并设置间隔:
var casper = require('casper').create ({
waitTimeout: 15000,
stepTimeout: 10000,
verbose: true,
viewportSize: {
width: 1400,
height: 768
},
pageSettings: {
"userAgent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.10 (KHTML, like Gecko) Chrome/23.0.1262.0 Safari/537.10',
"loadImages": false,
"webSecurityEnabled": false,
"ignoreSslErrors": true
},
onWaitTimeout: function() {
//throw new Error
},
onStepTimeout: function() {
//throw new Error
}
});
casper.on('remote.message', function(msg) {
console.log('***REMOTE MESSAGE***:', msg);
//throw new Error
});
// how many clicks
var clickCount = 3
casper.start('http://www.google.com'); //+++ change the url
// function to click button
casper.Clicker = function () {
this.click('#vote');
this.echo('I just clicked');
return true;
};
//function to wait set time
casper.Waiter = function () {
// adjust wait time between clicks
this.wait(3000, function() {
this.echo('I waited for 3 seconds.');
});
return true;
};
// loop
casper.then(function() {
for (var i = 0; i < clickCount; i++) {
this.waitFor(function check() {
return this.Clicker();
});
this.waitFor(function check() {
return this.Waiter();
});
}
this.echo('Olayy!');
});
casper.run();