从操纵up页面返回值。evaluate()

时间:2020-04-08 05:01:04

标签: javascript node.js puppeteer

因此,我有一个函数可以返回下一个函数所需的page

async function browser(){
        const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: false, devtools : true});
        const incog = await browser.createIncognitoBrowserContext();
        const page = await incog.newPage();

            await page.goto('web')
            .then(function(){
       page.evaluate(function(){
            $(document).ready(function(){
                $('input[name ="username"]').val("a");
                $('input[name ="password"]').val("b");
                $(document).ready(function(){
                    $('#loginbtn').click();
                });
            });
        });
      });

      await page.waitForNavigation({waitUntil : 'load'});
      return page;

因此,我通过执行以下操作传递结果值browser() browser().then(result => nextFunction(result) 最终将页面传递到nextFunction()


async function nextFunction(page){
    await page.goto('web')
       .then(function(){
        var msg = "Test : \n\n";
        page.evaluate(function(){
            var num = 1;
            $('.card').each(function(i, e){
                msg += "======= Activity "+num+" ========\n";
                msg += "Subject : " + $(this).find('.name').text() + "\n";
                msg += "Due : " + $(this).find('.date').text() + "\n";
                msg += "===== End Activity "+num+" ======\n\n";
                num++;
            });
        });
        console.log(msg);
       });
}

我尝试从msg打印nextFunction(),但只打印Test:

我想实现的目标是: 获取msg结果或从nextFunction()的返回值分配变量

有什么解决方案或更好的方法吗?

1 个答案:

答案 0 :(得分:1)

  1. 要获得更清晰的代码和更轻松的故障排除,请选择一个通道,既可以异步/等待,也可以与message.getMessageId()链接。同时使用它们会使代码难以阅读。异步/等待对于错误处理而言更具可读性,并且不那么棘手。了解更多here
  2. 要在Future<Stream> getDevicesForSynchronized() async { return dbRef.child(DEVICES).limitToLast(10).onValue; } 中查看then,请收听“控制台”事件:
console.log
  1. evaluate上下文与Puppeteer分开,因此评估的const page = await browser.newPage(); page.on('console', msg => console.log(msg.text())); 将是page.evaluate。移动msg进行评估,然后将结果返回给puppeteer。
undefined