在运行时未执行操纵up脚本中的评估功能

时间:2020-01-02 17:55:02

标签: javascript puppeteer

我遇到了我不了解的情况。我正在使用评估函数来返回应用程序中下拉菜单中的链接。我传入一个变量数组,我想用它在下拉列表中检索这些部分的链接。 评估函数在调用时不会运行。我不明白为什么会这样。

这是我的代码,我们将不胜感激。

const selectAccount = await page.evaluate((depositAndCreditAccountIdentifier) => {
        console.log(`depositAndCreditAccountIdentifier ${depositAndCreditAccountIdentifier}`);
        var returnLinks = [];
        for(dn in depositAndCreditAccountIdentifier){
            sectionIdentifier = depositAndCreditAccountIdentifier[dn];
            var varContainer = $('div[ng-if="' + sectionIdentifier + '"]>div[class="multiselect-collection"]>a');
            returnLinks.push(varContainer);
            varContainer.each(function(elementIndex){
                returnLinks.push(varContainer[elementIndex].getAttribute('data-test'));
            });
        }
        console.log(`returnLinks ${returnLinks}`);
        return returnLinks;
    }, depositAndCreditAccountIdentifier);

    console.log(`selectAccount: ${selectAccount}`);

好的,

我发现它确实执行了将代码记录在浏览器控制台中的信息。感谢这个问题:Puppeteer: pass variable in .evaluate()

看来我的问题是一样的。基于此console.log('returnLinks ${returnLinks}');返回中没有任何内容。

我尝试了另一种方法。我正在返回一个Promise(),它再次收集了我正在寻找的所有内容,但没有返回任何内容。

exports.returnLinks = async function(page, sectionIdentifier) {
    console.log(`sectionIdentifier: ${sectionIdentifier}`);
    await page.evaluate(async (sectionIdentifier) => {
        function grabAccountAttributes(sectionIdentifier){
            return new Promise((resolve, reject)=> {
                var returnLinks = [];
                var varContainer = $('div[ng-if="' + sectionIdentifier + '"]>div[class="multiselect-collection"]>a');
                console.log(`varContainer: ${varContainer}`);
                varContainer.each(function(elementIndex){
                    var linkItem = varContainer[elementIndex].getAttribute('data-test');
                    console.log(`linkItem: ${linkItem}`);
                    returnLinks.push(linkItem);
                });
                setTimeout(()=>{
                    resolve(true)
                }, 3000);
            });
        }
        var linksAttributes = await grabAccountAttributes(sectionIdentifier);
        // console.log(`returnLinks ${returnLinks}`);
        return linksAttributes;
    }, sectionIdentifier);

0 个答案:

没有答案