見出し画像

140 PyAutoGUIを使ってマウスを動かし、クリック操作を自動化する #コツコツPython #勉強の備忘録

こんにちは TechCommitメンバーの友季子です。
PyAutoGUIを使ってマウスを動かし、クリック操作を自動化する技術をシェアします。


仕組み

このコードを実行すると、Google検索ページで「Selenium Python」と検索し、検索結果が表示されたページで上から下に100ピクセル間隔でクリックしていきます。

全体コード

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui
import time

# Seleniumでブラウザを起動
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Google検索ページにアクセス
driver.get("https://www.google.com")

try:
    # Google検索バーが表示されるまで待機
    search_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "q"))
    )
    
    # 「Selenium Python」を検索
    search_box.send_keys("Selenium Python")
    search_box.submit()
    
    # 検索結果が表示されるまで待機
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "search"))
    )

    # Google検索結果画面でのクリック操作
    screen_width, screen_height = pyautogui.size()
    x_start = screen_width // 2  # 画面の中央のX座標
    y_start = 100  # クリック開始位置のY座標

    for i in range(y_start, screen_height, 100):  # 100ピクセル間隔で下に移動
        pyautogui.moveTo(x_start, i)
        pyautogui.click()
        time.sleep(1)  # 1秒待機して次のクリックへ

except Exception as e:
    print(f"Error: {e}")

finally:
    # ブラウザを閉じる
    driver.quit()

コメントあり全体コード

# 必要なライブラリをインポート
from selenium import webdriver  # ウェブブラウザを操作するためのライブラリ
from selenium.webdriver.chrome.service import Service  # ChromeDriverのサービスを管理
from webdriver_manager.chrome import ChromeDriverManager  # ChromeDriverの自動インストールを管理
from selenium.webdriver.common.by import By  # 要素を指定するための方法を定義
from selenium.webdriver.support.ui import WebDriverWait  # 要素が見つかるまで待機
from selenium.webdriver.support import expected_conditions as EC  # 要素が特定の状態になるまで待機
import pyautogui  # マウスやキーボード操作を自動化するライブラリ
import time  # 時間の待機や遅延を管理するライブラリ

# Seleniumでブラウザを起動
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Google検索ページにアクセス
driver.get("https://www.google.com")

try:
    # Google検索バーが表示されるまで待機
    search_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "q"))
    )
    
    # 「Selenium Python」を検索
    search_box.send_keys("Selenium Python")  # 検索バーにキーワードを入力
    search_box.submit()  # 検索を実行
    
    # 検索結果が表示されるまで待機
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "search"))
    )

    # Google検索結果画面でのクリック操作
    screen_width, screen_height = pyautogui.size()  # 画面の幅と高さを取得
    x_start = screen_width // 2  # 画面の中央のX座標を設定
    y_start = 100  # クリックを開始するY座標を設定

    for i in range(y_start, screen_height, 100):  # 100ピクセル間隔で下に移動
        pyautogui.moveTo(x_start, i)  # X座標を固定し、Y座標を変えながらマウスを移動
        pyautogui.click()  # マウスをクリック
        time.sleep(1)  # 1秒待機して次のクリックへ

except Exception as e:
    print(f"Error: {e}")

finally:
    # ブラウザを閉じる
    driver.quit()

コード全体の説明

このコードは、Seleniumを使ってGoogle検索ページにアクセスし、「Selenium Python」というキーワードで検索を行い、検索結果ページで画面の中央から下に向かってクリックを繰り返すプログラムです。PyAutoGUIを使ってマウスを動かし、クリック操作を自動化しています。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui
import time

0.ライブラリのインポート:

  • selenium: ウェブブラウザを操作するためのライブラリ

  • pyautogui: マウスとキーボードの操作を自動化するライブラリ

  • time: プログラムの実行を一時停止するためのライブラリ

# Seleniumでブラウザを起動
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

1.ブラウザの起動:


Seleniumを使ってGoogle Chromeブラウザを起動します。

# Google検索ページにアクセス
driver.get("https://www.google.com")

2.Googleにアクセス:
Googleのホームページにアクセスします。

try:
    # Google検索バーが表示されるまで待機
    search_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "q"))
    )
    
    # 「Selenium Python」を検索
    search_box.send_keys("Selenium Python")
    search_box.submit()
    
    # 検索結果が表示されるまで待機
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "search"))
    )

3.検索の実行:

  • 検索バーを待機: 検索バーが表示されるまで待機します。

  • キーワード入力と検索実行: 「Selenium Python」というキーワードを入力し、検索ボタンを押します。

  • 検索結果が表示されるまで待機: 検索結果が表示されるまで待ちます。

    # Google検索結果画面でのクリック操作
    screen_width, screen_height = pyautogui.size()
    x_start = screen_width // 2  # 画面の中央のX座標
    y_start = 100  # クリック開始位置のY座標

    for i in range(y_start, screen_height, 100):  # 100ピクセル間隔で下に移動
        pyautogui.moveTo(x_start, i)
        pyautogui.click()
        time.sleep(1)  # 1秒待機して次のクリックへ

4.検索結果画面でのクリック操作:

  • 画面のサイズを取得: モニターの解像度(画面の幅と高さ)を取得します。

  • クリック開始位置の設定: クリックを始めるX座標とY座標を設定します。

  • ループでクリック:

    • 100ピクセル間隔で下に移動しながらクリックを繰り返します。

    • pyautogui.moveTo(x_start, i)でマウスを移動させ、pyautogui.click()でクリックします。

    • 各クリックごとに1秒待機します。

except Exception as e:
    print(f"Error: {e}")

finally:
    # ブラウザを閉じる
    driver.quit()

5.エラーハンドリングとブラウザの終了:

  • エラーハンドリング: エラーが発生した場合、そのエラーメッセージを表示します。

  • ブラウザの終了: すべての操作が終了したら、ブラウザを閉じます

動画サンプル

おわりに

何かあなたにもお役に立てれば幸いです!

いいなと思ったら応援しよう!