PHP 初心者が WordPress の プラグイン 作成 ! part27 ( ヘッドレスブラウザでココナラのブログを書く!)

この記事では PHP 初心者 が WordPress プラグイン を 作成 します。 part27 ではヘッドレスブラウザでココナラのブログに対して書き込みを行ってみたいと思います。

前回までの確認でブログ投稿画面にたどり着くことができました。

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

ただ、最後の画面遷移は画面遷移ではなかったようで(部分更新というやつ?)タイムアウトしてしまったようです。

少し調整

ブログの選択ウィンドウ(モーダルウィンドウ)から次の処理の部分は画面遷移ではなかったようです。

しかしブログ投稿画面まで少し時間がかかることは通常のブラウザで確認済み。なので30秒待機ではなく10秒待機にしておきます。

$evaluation = $page->evaluate('document.querySelector("button.button.is-primary").click()')->waitForPageReload(Page::LOAD, 10000);

ブログ投稿

さて、肝心のブログ投稿画面です。
カバー画像(と画像全般)はどうやって指定すればよいのかわからないので「ブログタイトル」と「本文を入力してください」の部分に的を絞って挑戦します。

 

 

実装

それぞれの要素は以下の部分です。

ブログタイトル

ブログタイトル部分は特徴がないですがなんと選択できそうです。

// ブログを記述する
$evaluation = $page->evaluate(
    '(() => {
        document.querySelector("div.c-title input[placeholder=\"ブログタイトル\"]").value = "ヘッドレスブラウザから書き込み!";
    })()');
// screenshot(10秒待機)
$page->screenshot()->saveToFile('/var/www/html/bar05.png', 10000);

本文は厄介ですね。
本文

1行につき赤枠部分が1組追加される仕様のようなのです。
・・・まあそこはおいおい考えることにします(´・ω・`)

ということでこんな感じのコードになりました。

// ブログを記述する
$evaluation = $page->evaluate(
    '(() => {
        document.querySelector("div.c-title input[placeholder=\"ブログタイトル\"]").value = "ヘッドレスブラウザから書き込み!";
        document.querySelector("div.c-blogEditor_base div.c-blogBody_text).text = "ついに書き込むことに成功!";
    })()');
// screenshot(10秒待機)
$page->screenshot()->saveToFile('/var/www/html/bar05.png', 10000);

確認

http://localhost:8099/index.php にアクセスしてみました。

だめでした!!!

一筋縄ではいかないということでしょうか。

まとめ

ヘッドレスブラウザでココナラのブログに書き込みを行ってみました。

結果は失敗😑
なにがいけなかったのか調査を続けたいと思います。

今日はここまで!