初心者向けNode.jsとSeleniumでブラウザ自動化 - Node.js

Selenium とは?

Selenium はブラウザーの自動化を可能にするツールとライブラリーのプロジェクトです。

npm install selenium-webdriver

Python の例は以下を参考にしてください。

Hello World を Google 検索で検索する

const {Builder, Key, By, Browser} = require('selenium-webdriver');

(async function () {
  let driver = await new Builder().forBrowser(Browser.EDGE).build();

  try {
    await driver.get('https://www.google.com/');
    driver.manage().window().maximize();

    const title = await driver.getTitle()
    console.log(title)

    element = driver.findElement(By.id("APjFqb"))
    await driver.actions().sendKeys(element, 'Hello World').perform()
    await driver.actions().keyDown(Key.ENTER).perform()

  } finally {
    // await driver.quit();
  }
})();

driver.actions() の行は一行で書くこともできます。

await driver.actions().sendKeys(element, 'Hello World').keyDown(Key.ENTER).perform()

オプションを設定する

const { Browser, Builder, Key, By } = require("selenium-webdriver");
const chrome = require('selenium-webdriver/chrome');
const options = new chrome.Options();

(async function () {
  let driver = await new Builder().forBrowser(Browser.Chrome).setChromeOptions(options.addArguments('--start-maximized')).build();

  try {
    await driver.get('https://www.google.com/');

    element = driver.findElement(By.id("APjFqb"))
    await driver.actions().sendKeys(element, 'Hello World').keyDown(Key.ENTER).perform()

  } catch(e) {
    await driver.quit();
  }
})();

「 driver.manage().window().maximize() 」を使わずに「 options.addArguments('--start-maximized') 」を使ってもブラウザを最大化にすることができます。

次の例は「 Edge 」を使い、ブラウザのウィドウサイズを指定した場合の例です。

const { Browser, Builder, Key, By } = require("selenium-webdriver");
const edge = require('selenium-webdriver/edge');
const options = new edge.Options();

(async function () {
  let driver = await new Builder().forBrowser(Browser.Edge).setEdgeOptions(options.addArguments('window-size=1400,800')).build();

  try {
    await driver.get('https://www.google.com/');
  } catch(e) {
    await driver.quit();
  }
})();

Firefox を使う場合は、次のようにします。

const { Browser, Builder, Key, By } = require("selenium-webdriver");
const firefox = require('selenium-webdriver/firefox');
const options = new firefox.Options();

(async function () {
  let driver = await new Builder().forBrowser(Browser.Firefox).setFirefoxOptions(options.addArguments('window-size=1400,800')).build();

  try {
    await driver.get('https://www.google.com/');
  } catch(e) {
    await driver.quit();
  }
})();