【问题标题】:How to fill up forms using external JSON file using puppeteer如何使用 puppeteer 使用外部 JSON 文件填写表格
【发布时间】:2018-04-04 06:17:48
【问题描述】:
> const puppeteer = require('puppeteer');
> 
> (async () => {
>     const browser = await puppeteer.launch();
>     const page = await browser.newPage();
>     await page.goto('https://en.wikipedia.org', {waitUntil: 'networkidle2'});
> 
>     await page.waitFor('input[name=search]');
> 
>     // await page.type('input[name=search]', 'Adenosine triphosphate');
>     await page.$eval('input[name=search]', el => el.value = 'Adenosine triphosphate');
> 
>     await page.click('input[type="submit"]');
>     await page.waitForSelector('#mw-content-text');
>     const text = await page.evaluate(() => {
>         const anchor = document.querySelector('#mw-content-text');
>         return anchor.textContent;
>     });
>     console.log(text);
>     await browser.close(); })();

这是使用 puppeteer (https://github.com/GoogleChrome/puppeteer) 填写表单的标准示例

现在我的问题是我是否有像 test.json 这样的外部 json 文件

{"搜索":"硫化氢"}

我想将我的 json 文件中的值用于

await page.$eval() 

函数而不是像硬编码一样

await page.$eval('input[name=search]', el => el.value = 'Adenosine triphosphate');

有人可以帮忙吗?

【问题讨论】:

    标签: javascript node.js git automation puppeteer


    【解决方案1】:

    试试这个代码,或者类似的代码:

    var fs = require('fs');
    var data = JSON.parse(fs.readFileSync('filename.json', 'utf8'));
    
    const fields = Object.entries(data);
    
    const fillField = async (selector, value, page) => {
      const element = await page.$(selector);
      if (!element) throw new Error(`Could not find element with selector ${selector}`);
      await element.type(value);
    };
    
    for (let i=0; i < fields.length; i++) {
      const field = fields[i];
      const value = data[field];
      const selector = `input[name="${field}"`;
      await fillField(selector, value, page);
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 2016-08-26
      相关资源
      最近更新 更多