0
我正在編寫CasperJS腳本來自動化搜索表單並捕獲後續頁面。但是,搜索表單會首先進入加載啓動頁面,直到數據到達。所以我添加了waitForSelector
函數,它似乎可以用於我的某些頁面,但其他函數返回變量name
作爲NULL
。如果真的「等待」該元素在DOM上,那該如何呢?這個變量仍然是NULL
casper.each(searchPages,function(casper,index){
var currentTime = new Date();
var month = currentTime.getMonth() + 2;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var dateStart = month + "/" + day + "/" + year;
month = currentTime.getMonth() + 3;
var dateEnd = month + "/" + day + "/" + year;
casper.thenOpen(url,function(){
var myfile = "data-"+year + "-" + month + "-" + day+".html";
this.evaluate(function(j) {
document.querySelector('select[name="searchParameters.localeId"]').selectedIndex = j;
},index);
this.evaluate(function(start) {
$("#leaveDate").val(start);
},dateStart);
this.evaluate(function(end) {
$("#returnDate").val(end);
},dateEnd);
this.evaluate(function() {
$("#OSB_btn").click();
});
this.waitForSelector('#destinationForPackage', function() {
var name = casper.evaluate(function() {
return $("#destinationForPackage option[value='" + $("#destinationForPackage").val() + "']").text()
});
if (name != "Going To"){
if (name == null){
console.log("it's null");
}else{
name = name.replace("/","_");
casper.capture('Captures/Searches/search_' + name + '.jpg');
console.log("Capturing search_" + name);
}
}
},function(){
console.log("Search page timed-out.");
},20000);
});
});
「怎麼會是這樣,如果它是真正的‘等待’該元素是在DOM?你不是在等*那*元素。你正在等待'#destinationForPackage',但'name'不是那個元素;它是'$('#destinationForPackage選項...')。text()'的結果。 –
@JordanRunning好的,但'#destinationForPackage'是一個選擇框元素,據我的理解,相應的函數和代碼將不會被執行,直到'#destinationForPackage'在DOM上。沒有? – TheValyreanGroup
@JordanRunning你知道如何解決這個問題嗎? – TheValyreanGroup