Node.js + SeleniumでWordPressに自動ログインするコードサンプル。

node.js + seleniumでWordPressに自動ログインしてみるコードサンプルを載せておきます。

※この記事の見どころというかポイント

  • UnhandledPromiseRejectionWarning: WebDriverError: unknown error: call function result missing ‘value’について
  • とりあえずWordPreseに自動ログインするだけのコード。
  • ヘッドレスモードはコメントアウト

それではみていきましょう。

スポンサーリンク

WordPressに自動ログインするサンプルコード

const fs = require('fs');
const { promisify } = require('util');
const webdriver = require('selenium-webdriver');
const { Builder, By, until } = webdriver;

const capabilities = webdriver.Capabilities.chrome();
capabilities.set('chromeOptions', {
    args: [
        //'--headless',
        '--no-sandbox',
        '--disable-gpu',
        `--window-size=1980,1200`
    ]
});

// awaitを使うので、asyncで囲む
(async () => {

    // ブラウザ立ち上げ
    const driver = await new Builder().withCapabilities(capabilities).build();

    // wordpressログイン画面に移動
    await driver.get('wordpress_loginpage_url');

    // 検索ボックスが表示されるまで待つ
    await driver.wait(until.elementLocated(By.id('user_login')), 10000);

    // ユーザー名の入力
    await driver.findElement(By.id('user_login')).sendKeys('username');

    // パスワードの入力
    await driver.findElement(By.id('user_pass')).sendKeys('password');

    // ログインボタンをクリック
    await driver.findElement(By.id('wp-submit')).click();


    // ブラウザ終了
    //driver.quit();

})();
  • await driver.get(”)の値にはログインページのurlを指定
  • .sendKeys(”)にはユーザー名とパスワードを指定
スポンサーリンク

UnhandledPromiseRejectionWarning: WebDriverError: unknown error: call function result missing ‘value’ エラー

上記コードを実行してみると、いきなりはまりました。こちらの原因を調査したところ、以下のような文献を見つけました。

新しいChromeに対して古いWebDriverを利用していると実行時エラーになるようだった。

引用元: Chromeでunknown error: call function result missing 'value' となった場合、WebDriverを更新すると解決するかもしれない – Qiita

ということでしたのでChromeのWebドライバーを新しくしました。最新のChromeウェブドライバーを入手するには以下のサイトからダウンロードします。※最新版を使うようにしたらエラーが出なくなりました。

Downloads – ChromeDriver – WebDriver for Chrome

node.jsのSleniumリファレンス

seleniumはいろいろなプログラミング言語にむけて提供されていますが、やっていることは同じなのですが、構文が微妙に違います。今回やったのはnode.js用のselenium構文です。node.js用のseleniumリファレンスは以下のサイトです。

selenium-webdriver

英語リファレンスでよくわからないなら、こちらが日本語で詳しく解説しているようで参考になります。
selenium-webdriverの紹介とAPI翻訳 – Qiita

※p.s(追伸) PHPがわかりません。※

この記事の情報は以上になります。

コメント

タイトルとURLをコピーしました