PHP 初心者が WordPress の プラグイン 作成 ! part26 ( ヘッドレスブラウザでココナラのブログ画面に遷移)

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part26 ではヘッドレスブラウザでココナラのブログに遷移するところまで進めます。

前回ついにココナラにログインすることができました。
「デバッグは画像出力で都度確認」がノウハウとして身に付きました。

本当はヘッドレスを解除して動きの確認ができればベストなのですがPHPの環境はDockerコンテナの中なのでヘッドレスでしか動かすことができないのです😅

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

ブログのページに移動する。

ログイン後、メニューの右側に「ブログを投稿する」があります。

このリンクをクリックできればよいわけですね。

要素を確認してみましょう。

これまた選択しにくい要素ですね・・・😕

実装してみた

こんな感じでどうですかね。
さすがに安直すぎるでしょうか(笑

// ブログのページに遷移
try{
    $evaluation = $page->evaluate('document.querySelector("a.c-subLink_item-blog").click()')->waitForPageReload(Page::LOAD, 30000);
} catch(OperationTimedOut $e) {
    echo "長すぎ";
} catch(NavigationExpired $e) {
    echo "別のページが読み込まれた";
}
// screenshot(10秒待機)
$page->screenshot()->saveToFile('/var/www/html/bar03.png', 10000);

確認

やってみましょう!
http://localhost:8099/index.php

見事タイプの選択画面が表示されました!

このまま「入力へ進む」をクリックしたいわけです。

ブログの種類を選ぶ

今度は「入力へ進む」ボタンの要素を確認してみましょう。
こちらも取得が難しそうな・・・

特徴があまりないのでなんだかうまくいかない気もします😑

実装してみた その2

愚直に「buttonとis-primaryのクラスを持つbutton要素」と指定してみました!

// ブログの種類選択
try{
    $evaluation = $page->evaluate('document.querySelector("button.button.is-primary").click()')->waitForPageReload(Page::LOAD, 30000);
} catch(OperationTimedOut $e) {
    echo "長すぎ";
} catch(NavigationExpired $e) {
    echo "別のページが読み込まれた";
}
// screenshot(10秒待機)
$page->screenshot()->saveToFile('/var/www/html/bar04.png', 10000);

うまくいってほしい!

確認 その2

再度!
http://localhost:8099/index.php

あ・・・。タイムアウトしてしまったようです。

しかしデバッグ用に出力したファイルには驚くべき結果が😲

ブログ書き込み画面が表示されていました!!!!

しかしタイムアウト例外が発生したということは「画面遷移」ではないということなのでしょうか?

まとめ

ヘッドレスブラウザでココナラのブログ画面に遷移してみました。
ついにここまで来ましたが最後の遷移(?)ではタイムアウトになっていました。

ブログの書き込み画面には遷移できたわけだし、不安定ですがこのまま先に進んでみましょうかね!

今日はここまで!