Как перебрать список csv, используя фантом JS для отправки данных csv в форму веб-сайта - PullRequest
1 голос
/ 19 февраля 2020

Я придумал 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
...