Я придумал 2 отдельных решения для того, над чем я работаю. Одним из них является чтение строк и столбцов списка CSV, который имеет входные данные, которые мне нужно поместить на веб-сайт для очистки.
Программа чтения CSV выглядит следующим образом:
var fs = require('fs');
var sheet = fs.read('courtcalllist.csv')
.split("\n")
.map(function(row){
return row.split(",");
});
for (var i = 1; i < sheet.length - 1; i ++ ){
console.log(sheet[i][8] + " " + sheet[i][9] + " " + sheet[i][10])
}
phantom.exit();
, который работает хорошо, так как единственные данные, которые мне нужны, находятся в этих 3 столбцах ... теперь я могу очистить данные с сайта, если я жестко закодировал значения здесь (что прокомментировано), но он не читает значения CSV, которые я хочу сделайте это для каждой строки:
var page = new WebPage(), testindex = 0, loadInProgress = false;
var fs = require('fs');
var sheet = fs.read('courtcalllist.csv').split("\n").map(function(row){
return row.split(",");});
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.onLoadStarted = function() {
loadInProgress = true;
console.log("load started");
};
page.onLoadFinished = function() {
loadInProgress = false;
console.log("load finished");
};
function evaulateExcel(year, district, casenumber){
var steps = [
function() {
page.open("http://www.cookcountyclerkofcourt.org/CourtCaseSearch/CourtCallSearch.aspx");
},
function() {
page.evaluate(function() {
document.getElementById('ctl00_MainContent_txtCaseYear').value = year; //'2018'; //
document.getElementById('ctl00_MainContent_txtCaseCode').value = district; //'M3';
document.getElementById('ctl00_MainContent_txtCaseNumber').value = casenumber;//'005338';
return;
//}
});
}, //2nd function bracket
function() {
//click
page.evaluate(function() {
document.getElementById('ctl00_MainContent_btnSearch').click();
});
},
function() {
page.evaluate(function() {
for (i = 1; i < 11; i++ ){
console.log(document.querySelectorAll('td')[i].innerHTML);
}
});
}
];
interval = setInterval(function() {
if (!loadInProgress && typeof steps[testindex] == "function") {
console.log("step " + (testindex + 1));
steps[testindex]();
testindex++;
}
if (typeof steps[testindex] != "function") {
console.log("test complete!");
phantom.exit();
}
}, 50);
};
for (var i = 1; i < sheet.length - 1; i ++ ){
//console.log(sheet[i][8] + " " + sheet[i][9] + " " + sheet[i][10]);
//var year = sheet[i][8];
//var district = sheet[i][9];
//var casenumber = sheet[i][10];
evaulateExcel(sheet[i][8] ,sheet[i][9] ,sheet[i][10])
}
Я новичок в Javascript и фантом JS, поэтому я подумал, что, возможно, я мог бы обернуть весь этот процесс выше как функцию, где я могу передать параметры в моем для l oop затем перейдите в функцию, такую как:
for (var i = 1; i < sheet.length - 1; i ++ ){
**evaulateExcel**(sheet[i][8] ,sheet[i][9] ,sheet[i][10])
}
Но параметры, похоже, не проходят через каждый шаг всего этого процесса
Используя то, что я пробовал выше, я бы просто получил эту ошибку:
TypeError: null is not an object (evaluating 'document.getElementById('ctl00_MainContent_txtCaseYear').value = year')
undefined:3
:9