程序在page.evaluate中的嵌套循环中冻结-Puppeteer-NodeJS

时间:2019-03-03 05:06:28

标签: javascript node.js puppeteer

我是puppeteer的新手,我编写了一个程序来自动从下拉列表中选择一个选项。但是一旦到达第二个循环,它就会冻结。我试着删除等待,并将return语句换成数组,但无济于事(下面的代码)。我该如何解决?谢谢! :) PS:让我知道您是否需要完整的代码:)

var numDays = await page.evaluate(() => { //INIT DATAS
    return document.getElementsByClassName("input")
        .length;
});
console.log(numDays);
var selected = "";
for (var i = 0; i <
    numDays; i++) { // # of days signup loop
    var numOptions = await page.evaluate(i => { //INIT DATAS
        return document.getElementsByClassName("input")[i].options.length;
    }, i); //init data for numOptions loop
    for (var j = 1; j <
        numOptions; j++) { // 17x options loop | Find study hall option loop
        var result = await page.evaluate(i => {
            return document.getElementsByClassName("input")[i].options[j].value;
        }, i, j);
        var resultTxt = await page.evaluate(i => {
            return document.getElementsByClassName("input")[i].options[j].text;
        }, i, j);
        if (resultTxt.toLowerCase()
            .indexOf('study hall') != -1 || resultTxt.toLowerCase()
            .indexOf('catch up on work') != -1) {
            selected = result;
        } //choose study hall option
    }
}

1 个答案:

答案 0 :(得分:1)

好的,我已经找到问题的根源了……事实证明我没有正确导入两个页面中的j。评估。 (确实很愚蠢的问题,但现在已解决:)

感谢Aankhen帮助我解决问题:)如果您发帖,我可以将您的帖子标记为答案。请让我知道!