pupeteer でフオーム (検索ボックス) を操作する
今度は、フォームを操作してみます。サイトのページには、検索ボックスを設置してあるので、pupeteer で検索させたいと思います。
検索ボックスのフォーム要素には以下のように id が設定してあるのでそれを使っていきます。
- テキストボックス
id: search_text - 検索ボタン
id: search_button
テキストボックスに検索ワードを入力するには、次のように書きます。
await page.type("#search_text", "検索ワード");
検索ボタンをクリックさせるには、次のように書きます。
await page.click("#search_button");
要素に id を付けていると、操作しやすいですね。
では、Xkanon を検索させてみたいと思います。次のような内容になりました。
#!/usr/bin/node const puppeteer = require("puppeteer-core"); const URL = "https://sirius10.net/"; (async () => { console.log("*** Start ***"); console.log("Chromium 起動"); const browser = await puppeteer.launch({ headless: false, slowMo: 50, executablePath: "/usr/bin/chromium-browser" }); console.log("新しいタブ"); const page = await browser.newPage(); console.log("ビューポート/デバイス設定"); await page.setViewport({ width: 1024, height: 768 }); console.log("sirius10 へ移動"); await page.goto(URL); console.log('検索ボックスに "Xkanon" を入力する'); await page.type("#search_text", "Xkanon"); console.log("submit ボタンをクリックする"); await page.click("#search_button"); console.log("スクリーンショットを test3.png に保存"); await page.screenshot({ path: "test3.png", }); console.log("Chromium 終了"); await browser.close(); console.log("*** End ***"); })();
保存された画像は以下のように、検索結果のページになりました。

他のフォームも同様に操作できるでしょう。なお、id がついていない場合は、type 属性や value 属性を使うこともできます。例えば、submit ボタン (type="submit") がページ内に一つしか無ければ、次のようにしてボタンをクリックします。
await page.click('input[tyupe="submit"]');
あるいは、単純に Enter キーを押したことにすればいいです。
await page.keyboard.press('Enter');
他の方法もあるようですが、自分の環境に合った方法でクリックさせればいいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません