相互に接続された 3 つの選択を含むフォームがあると、このようなことができます。
var valueFirstSelect = 125;
var valueSecondSelect = 6;
var valueThirdSelect = 47;
//create casper object
var casper = require('casper').create({
loadImages:false,
verbose: true,
logLevel: 'debug'
});
//open url
casper.start('http://thewebsite.com');
casper.then(function(){
//select option on first select
this.evaluate(function(selectValue){
document.querySelector('select[name=s1]').value = selectValue;
return true;
},valueFirstSelect);
//firing onchange event to populate the second select
this.evaluate(function() {
var element = document.querySelector('select[name=s1]');
var evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
element.dispatchEvent(evt);
});
//wait until the second select is populated
this.waitFor(function check() {
return this.evaluate(function() {
return document.querySelectorAll('select[name=s2] option').length > 1;
});
}, function then() {
//select option on second select
this.evaluate(function(selectValue){
document.querySelector('select[name=s2]').value = selectValue;
return true;
},valueSecondSelect);
//firing onchange event to populate the third select
this.evaluate(function() {
var element = document.querySelector('select[name=s2]');
var evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
element.dispatchEvent(evt);
});
//wait until the third select is populated
this.waitFor(function check() {
return this.evaluate(function() {
return document.querySelectorAll('select[name=s3] option').length > 1;
});
}, function then() {
//select option on third select
this.evaluate(function(selectValue){
document.querySelector('select[name=s3]').value = selectValue;
return true;
},valueThirdSelect);
//click submit button
casper.thenClick('form.items input[type="submit"]', function() {
/* Do something after click */
});
});
});
});
casper.run(function() {
//finish execution script
this.exit();
});
コンテキスト ページに jQuery ライブラリが含まれている場合、このコードは異なる可能性があります (小さくてクリーン)。
ここに、動的選択リストで casperjs と jQuery を使用する例があります。
チェインされた Select を使用する CasperJs と Jquery