Puppeteerでkintoneを自動操作

以前記事にしたPuppeteerについてです。 今更ですが、基本的な使い方を記事にしてみました。

サンプル

kintoneに自動ログインして、アプリ内に設置したボタンを自動クリックします。 今回はわかりやすさのためにヘッドレスをオフにしていますが、オンにするとPCの画面に表示せずにブラウジングすることができます。

コード

Puppeteerを利用しています。 npm等を用いてインストールします。

・Puppeteerのインストール

$ npm i puppeteer

実行用のコードです。

・sample.js

(async()=\>{constpuppeteer=require('puppeteer');consturl='https://\*\*\*\*.cybozu.com/k/\*\*\*\*/';//目的のページのURLconstbasicUser=false;//Basic認証のユーザー名(設定していない場合はfalse)constbasicPassword=false;//Basic認証のユーザー名(設定していない場合はfalse)constuser='\*\*\*\*';//kintoneのログインユーザー名constpassword='\*\*\*\*';//kintoneのログインパスワードconstbrowser=awaitpuppeteer.launch({//ブラウザ起動headless:false,//ヘッドレス設定(アニメーション的にわかりやすくするため。実用では不要。)slowMo:50,//スローモーション(アニメーション的にわかりやすくするため。実用では不要。)defaultViewport:null//viewport設定(アニメーション的にわかりやすくするため。実用では不要。)});constpage=awaitbrowser.newPage();if(basicUser&&basicPassword){//Basic認証(設定している場合)awaitpage.setExtraHTTPHeaders({
      Authorization:`Basic ${new Buffer.from(`${basicUser}:${basicPassword}`).toString('base64')}`});
  }awaitpage.goto(url);//ログインページへ遷移awaitpage.type('input[name="username"]', user);//kintoneのユーザー名入力awaitpage.type('input[name="password"]', password);//kintoneのログインパスワード入力await(awaitpage.$('.login-button')).click();//ログインボタンクリックawaitpage.waitForNavigation({waitUntil:"domcontentloaded"});//目的のページへの遷移を待機awaitpage.waitFor('.alert-button');awaitnewPromise(resolve=\>setTimeout(resolve,1000));//待ち時間(アニメーション的にわかりやすくするため。実用では不要。)await(awaitpage.$('.alert-button')).click();//アプリに設置したボタン(class名:「alert-button」)をクリック})();

実行

シェルを用いて、sample.jsがあるディレクトリで下記を実行します。

$ node sample.js

アプリ設置したレコード更新ボタンなどを自動でクリックするといった使い方もできますね。 kintone REST APIを使えばkintone外部からも大抵の操作はできますが、kintone内部用に作成した機能をそのまま使いたいときには便利かもしれません。

こんにちは!

Puppeteerでのkintone操作といえば、それに特化したライブラリ「Jinzo-Ningen」というのを

弊社SonicGardenのメンバーが作ってたりします。オープンソースです。

https://github.com/goqoo-on-kintone/jinzo-ningen

 

kintone特有の面倒くさい部分をカバーする各種関数を、こんな感じで整備しております。

https://github.com/goqoo-on-kintone/jinzo-ningen/blob/master/doc/reference.md

 

Jestと組み合わせてkintoneの自動テスト(E2Eテスト)をするチュートリアルがこちら!

https://github.com/goqoo-on-kintone/jinzo-ningen/blob/master/doc/tutorial.md

 

 

まだ全然知られてないので、この場を借りて宣伝させてもらいました。

よかったら、ぜひJinzo-Ningenでのスクレイピングも試してみてくださいませ!

Hello!

It’s useful of your article.

And I have a question, when I want to capture the home screen. It will display the error.

How can I solve the problem? Thank you very much!

It displays when I capture the portal screen  (https://xxx.cybozu.com/k/#/portal)

Dear pokemon36,

Try setting “–disable-web-security” when starting the browser.

const browser = await puppeteer.launch({ //ブラウザ起動
  args: [
    '--disable-web-security'
  ],
  headless: false, //ヘッドレス設定(アニメーション的にわかりやすくするため。実用では不要。)
  slowMo: 50, //スローモーション(アニメーション的にわかりやすくするため。実用では不要。)
  defaultViewport: null //viewport設定(アニメーション的にわかりやすくするため。実用では不要。)
});