【问题标题】:Passing Puppeteer log result into form input field将 Puppeteer 日志结果传递到表单输入字段
【发布时间】:2021-03-29 22:45:09
【问题描述】:

使用 Puppeteer,我可以提取数据并在终端上打印该数据:

输出:

{
  name: 'Deep into the Jungle',
  price: '$24'
}

我也知道我只能打印姓名,使用以下代码:

console.log(result.name);

输出:

{
  'Deep into the Jungle'
}

我正在尝试将 result.name 传递给我网站上的表单字段。但没有成功。

我已经知道表单字段名称,并且可以使用此方法成功地手动放置数据:

await page.$eval('input[name=wc_name]', el => el.value = 'my-manually-written-name-goes-here');

因为我知道正确的字段输入名称并且我知道我想传递什么值,所以从逻辑上讲,这样的事情应该可以工作:

await page.$eval('input[name=wc_name]', el => el.value = result.name);

但它没有通过任何东西。一个空白。

我还尝试了以下方法:

await page.type('input[name=wc_name]', result.name);

也是一个空白,什么都没通过。

所以我的问题是:

  1. 我错过了什么?我不是编码员,也许我只是想念''""
  2. 实际上是否可以将结果值(只要您抓住它)传递到输入字段中吗? 也许我需要先使用fs 将值存储到文本文件中,然后(再次使用fs)从文件中获取它们并传递到我网站上的输入字段?

需要帮助。

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    不确定这是否足以解决但值得尝试。 result 变量在 Node.js 上下文中声明。要将其传输到浏览器上下文中评估的回调中,您需要将其添加为参数:

    await page.$eval('input[name=wc_name]', (el, name) => { el.value = name; }, result.name);
    

    【讨论】:

    • 最后一个快速问题,我该如何做同样的事情:await page.type("[class='ql-editor ql-blank']", 'mypricevalue');这是一个非输入。值:result.price
    • 如果在浏览器上下文中没有评估回调,Node.js 上下文变量应该可以工作。但是,page.type() 仅适用于输入类型元素。值得发布一个带有更详细描述的单独问题:您需要更改哪些元素以及以何种方式更改。
    • 会的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2010-11-03
    • 2018-03-31
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多