プログラミング入門

SeleniumはもうNG!PythonでWhatsAppを自動化する2026年版のスマートなやり方

「WhatsAppをPythonで自動操作したいけど、Seleniumだとすぐ壊れて困る…」

そんな悩みを持っている方、多いんじゃないでしょうか。実は2026年現在、Seleniumを使わないよりスマートな方法が注目を集めています。今回はその仕組みと実践的な使い方をわかりやすく解説します🚀

なぜSeleniumだとWhatsApp自動化がうまくいかないのか?

browser automation
browser automation / Photo by cottonbro studio via Pexels

WhatsApp WebはアップデートのたびにDOM構造が変わります。SeleniumでXPathやクラス名を指定してボタンを操作する方法は、WhatsApp側のデプロイが走るたびにあっさり壊れてしまうんですよね。

メンテナンスのコストが高く、「動いたと思ったら翌週には壊れてる」という状況になりがちです。これは初心者にとってとくに辛い体験です。

2026年の答え:Playwright + whatsplay の組み合わせ

注目されているのが Playwrightwhatsplay というライブラリの組み合わせです。

イメージとしてはこんな感じです。

  • 🎭 Playwright:Microsoftが開発したブラウザ自動化ツール。SeleniumよりもAPIが安定していて高速
  • 📦 whatsplay:WhatsApp Web専用のラッパーライブラリ。ミニファイされたクラス名ではなく属性ベースのセレクターを使うため壊れにくい

つまり、「壊れやすいクラス名に依存しない設計」になっているのが最大のポイントです。

実際にどんなものが作れる?

たとえば「特定の商品価格を監視して、閾値を下回ったらWhatsAppで通知を送るボット」が作れます。コードの流れはこんな感じです。

# 必要なライブラリをインストール
# pip install playwright whatsplay
# playwright install chromium

import asyncio
from whatsplay import WhatsApp

async def main():
    # WhatsApp Webに接続(初回はQRコードのスキャンが必要)
    async with WhatsApp() as wa:
        # 価格チェック(ここは自分のスクレイピングロジックを入れる)
        current_price = get_current_price()  # 例: 3200
        threshold = 3500

        # 価格が閾値を下回ったら通知を送信
        if current_price < threshold:
            await wa.send_message(
                to="自分の携帯番号(国番号付き, 例: '81901234xxxx')",
                message=f"💰値下げ通知!現在価格: {current_price}円(閾値: {threshold}円)"
            )
            print("通知を送信しました!")
        else:
            print("まだ閾値を超えています。監視を継続します。")

if __name__ == "__main__":
    asyncio.run(main())

ポイントをまとめるとこんな感じです👇

  • 初回起動時にQRコードが表示されるので、スマホのWhatsAppでスキャンしてログインする
  • ログイン情報はローカルにセッションとして保存されるため、2回目以降はQRスキャン不要
  • send_message()にはメッセージ送信先と本文を渡すだけでよく、DOM構造を意識する必要がない

Seleniumからの移行で気をつけたいこと


既存のSeleniumコードから移行する場合は、次の点を意識するとスムーズです。

  • XPath・CSSセレクターをベタ書きしていた処理は、whatsplayが提供するメソッド呼び出しに置き換える
  • Playwrightは非同期(async/await)が基本なので、同期的なSeleniumコードとは書き方が変わる
  • 本番運用する場合はセッションファイルの保管場所・権限に注意する(ログイン情報が含まれるため)

まとめ

今回のポイントを整理するとこんな感じです👇

  • ✅ SeleniumのDOM依存はWhatsApp Webのアップデートで壊れやすい
  • ✅ Playwright+whatsplayなら属性ベースのセレクターで壊れにくい
  • ✅ 非同期処理(async/await)に慣れておくとスムーズに移行できる

まずは自分がよく使う通知パターンを1つ選んで、小さく試してみるのがおすすめです。「思ったよりあっさり動いた」と感じてもらえるはずです。ぜひ一緒に試してみましょう!💪

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です