Мой код выглядит следующим образом:
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");
};
for (var i = 1; i < sheet.length - 1; i ++ ){
year = sheet[i][8];
district = sheet[i][9];
casenumber = sheet[i][10];
var steps = [
function () {//first function to open page
page.open("http://www.cookcountyclerkofcourt.org/CourtCaseSearch/CourtCallSearch.aspx");
}, //first function bracket
function () {// second function calls page to evaulate page input
page.evaluate(function(year, district, casenumber) {
console.log("this is my test " + year, district, casenumber);
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;
},year, district, casenumber);
}, //2nd function bracket
function () { // 3rd function calls evaluate click
//click
page.evaluate(function() {
document.getElementById('ctl00_MainContent_btnSearch').click();
});
}, //3rd function bracket
function () { // 4th function calls the 2nd page after data
// Output content of page to stdout after form has been submitted
page.evaluate(function() {
for (i = 1; i < 11; i++ ){
console.log(document.querySelectorAll('td')[i].innerHTML);
}
});
} //4thbracket
];
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);
}
По какой-то причине console.log будет печатать переменные, которые я передаю, так:
this is my test 2018 M3 005338
Что правильно, вот что Мне нужно, чтобы это было, но когда они оценены, я получаю:
TypeError: null is not an object (evaluating 'document.getElementById('ctl00_MainContent_txtCaseYear').value = year')
undefined:3
Приведенный выше код работает, если я жестко закодирую в нем свои значения. Это то, что закомментировано, но это не займет переменные я даю это.
Моя переменная превращается из строки в объект, поэтому она не может быть прочитана? Я в растерянности, я даже пытался
document.getElementById('ctl00_MainContent_txtCaseYear').value = year.toString;
document.getElementById('ctl00_MainContent_txtCaseCode').value = district.toString;
document.getElementById('ctl00_MainContent_txtCaseNumber').value = caenumber.toString;
И это просто возвращает мне ту же ошибку.