🖥

puppeteer (node.js) – BASIC認証 + テキスト入力 + ボタンクリック + スクリーンショット撮影 のスクリプト例

2023/09/16に公開
// package.json
//
// {
//   "dependencies": {
//     "puppeteer": "^21.1.1"
//   },
//   "type": "module"
// }

// $ node example.js

import puppeteer from 'puppeteer'

async function sleep(delay) {
  return new Promise((resolve) => setTimeout(resolve, delay))
}

(async () => {
  const browser = await puppeteer.launch({headless: false})
  const page = await browser.newPage()

  const url = 'https://example.com'

  //Basic認証のAuthorizationヘッダーを設定
  const BASIC_AUTH_USERNAME = 'username'
  const BASIC_AUTH_PASSWORD = 'password'
  await page.setExtraHTTPHeaders({
    Authorization: `Basic ${new Buffer(`${BASIC_AUTH_USERNAME}:${BASIC_AUTH_PASSWORD}`).toString('base64')}`,
  })

  const response = await page.goto(url, { waitUntil: ['domcontentloaded'], timeout: 60000 })

  if (response) {
    const status = response.status()
    const statusText = response.statusText()

    console.log(status)
    console.log(statusText)

    await sleep(1000)

    await page.type("[id='email']", 'example@example.com')
    await page.type("[id='password']", '************')

    await sleep(1000)

    await page.screenshot({path: './step1.png'})

    await page.click("[id='submit']")

    await sleep(1000)

    await page.screenshot({path: './step2.png'})

  }

  await browser.close()
})()

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-09-05

Discussion