syon

A fashion developer. Interested in life engineering.

Chromelessでselectボックスを操作する

07 Apr 2018 » Node.js, AWS Lambda

やりたいこと

Chromeless を使ってセレクトボックスの値を選択したい。 しかしそのためのAPIがない。

実現方法

evaluate でページに入り込み、対象要素を掴んでインデックスまたは値を指定して選択状態にする。

const { Chromeless } = require("chromeless");

async function run() {
  const chromeless = new Chromeless();

  await chromeless
    .goto("https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select")
    .scrollToElement("#Result");

  await chromeless.wait(3000);

  await chromeless.evaluate((selector, index) => {
    select = document.querySelector(selector);
    select.selectedIndex = index;
  }, '[name="select"]', 0);

  await chromeless.wait(3000);

  await chromeless.evaluate((selector, value) => {
    select = document.querySelector(selector);
    select.value = value;
  }, '[name="select"]', "value3");

  await chromeless.wait(5000);
  await chromeless.end();
}

run().catch(console.error.bind(console));