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の紹介とAPI翻訳 – Qiita
※p.s(追伸) PHPがわかりません。※
この記事の情報は以上になります。

コメント