PHP 初心者が WordPress の プラグイン 作成 ! part24 ( ヘッドレスブラウザでココナラのログインに挑戦 その3)

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part24 ではヘッドレスブラウザでココナラのログインに再挑戦の前に考察を行います。

前回ヘッドレスブラウザからココナラへのログインに再度挑戦しました。
PHP 初心者が WordPress の プラグイン 作成 ! part23 ( ヘッドレスブラウザでココナラのログインに挑戦 その2)

しかしおしいところでタイムアウトしてしまい先に進めることができませんでした(´・ω・`)

まだまだ挑戦を続けます!

タイムアウトの原因はなんなのか?

前回は画面遷移にかかる時間を調整することでログインできないか試してみました。

$evaluation = $page->evaluate('document.querySelector("form#UserLoginForm button[type=\"submit\"]").click()')->waitForPageReload(Page::LOAD, 30000);

ざっくりいうと「ページの読み込みが完了するまで30秒待機する」という実装です。
これでタイムアウトするわけですからいくらなんでもかかりすぎです。

少し考えてみた

「遷移に時間がかかっている」のではなく「そもそも遷移が発生していないのでは?」
という思考に至りました。

仮に遷移が発生していないのに遷移待ちを行っているのであればどんなに待っても遷移失敗になります。

遷移が発生していない

遷移が発生していないという観点で調査することにしました。

ココナラのログイン画面を通常のブラウザで確認します。

ココナラのログイン画面の抜粋です。

遷移直後の「メールアドレスでログインする」ボタンをみてください。
グレーアウトしていますね。実際クリックしてもなんの反応もありません。

該当部分の要素を見てみます。サブミットボタンが「disabled」に指定されていますね。

適当なメールアドレスとパスワードを入力してみます。
グレーアウトから明るいグリーンに色が変化しました。

また要素を見てみます。
サブミットボタンに付与されていた「disabled」がなくなりました。

仕様の確認

以上のことから、ココナラのメールアドレスでログインする機能は・・・

メールアドレスとパスワードの入力を監視していて
値が入っている場合のみ「メールアドレスでログインする」が有効になる。

という仕様なのです。

今回の実装と総括

この仕様であるならば今回の実装は何ら問題ないはず😑

ヘッドレスブラウザでもう一度ココナラのログイン画面に遷移してメールアドレスとパスワードを入力してみます。
画面は崩れていますがそれはおいておいて・・・。
やはり「メールアドレスでログインする」のボタンがグレーアウトしたままになっています。

ということで、おそらくヘッドレスブラウザからの入力(というよりも値の代入)では
「メールアドレスでログインする」は有効化できない。ということのようです。

 

 

まとめ

ヘッドレスブラウザからココナラのログインに挑戦するにあたり失敗の振り返りを行いました。
メールアドレスとパスワードが入力されていないと「メールアドレスでログインする」が有効にならないことを確認。
また機械的な入力(値の代入)では「メールアドレスでログインする」ボタンは有効化できないことがわかりました。

この状態でいくらヘッドレスブラウザに「ボタンをクリックせよ!」と命令を出してもクリックすることはできません。
結果、遷移も発生しないのでタイムアウトとなっているようです。

原因がわかれば対応の仕様もあります。
次はなんとかなりそうですね😄

今日はここまで!