Seleniumでfaucetを自動化する@python

今回はエアドロ案件Humanity Protocol(testnet.humanity.org/login?ref=gonzaman)のfaucetをpythonで自動実行するというものです。

通常は以下のような画面でウォレットアドレスを入力してRequestを押しますが、これをpython(プログラム)でやろう、ということです。


準備

Seleniumライブラリのインストール

--break-system-packagesオプションをつけるのは推奨される方法ではありません(システム全体に直接インストールする)が、私の環境ではこれしか通らなかったので。

pip install selenium --break-system-packages

Google Chromeのインストール

which google-chrome

このコマンドで何も表示されない場合はGoogle Chromeがインストールされていないのでインストールする。下記コマンドでダウンロード&インストール。

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb

下記コマンドでバージョンの確認。

google-chrome --version

私の場合

Google Chromeの場所を確認。

which google-chrome #場所確認

私の場合

パスを通す。

export PATH=$PATH:/usr/bin/google-chrome #私の場合

webdriver-managerのインストール

これも上記同様に推奨されるオプションではありませんが私の環境では--breake-system-packagesオプションが無ければ通りませんでした。

pip install webdriver-manager --break-system-packages

pythonコード

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time
from webdriver_manager.chrome import ChromeDriverManager

# ChromeDriverのパス
#CHROME_DRIVER_PATH = '/path/to/chromedriver'  # 適宜修正してください

# Seleniumのセットアップ
options = Options()
options.add_argument('--headless')  # ヘッドレスモードを有効にする場合
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')

#service = Service(CHROME_DRIVER_PATH)
#driver = webdriver.Chrome(service=service, options=options)

# ChromeDriverを自動的にダウンロード・管理
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

try:
    # 指定のページを開く
    driver.get("https://faucet.testnet.humanity.org/")

    # ページが読み込まれるのを待つ
    time.sleep(60)  # 必要に応じて適宜調整してください

    # テキストボックスを見つける(例: 'input'タグを探す)
    wallet_input = driver.find_element(By.TAG_NAME, "input")

    # ウォレットアドレスを入力
    wallet_address = "0xf69fd1aCae36De01E61E722CdF44B5BF9BAADd5C"
    wallet_input.send_keys(wallet_address)

    # Requestボタンを見つける(例: ボタンのタグや属性を使用して検索)
    request_button = driver.find_element(By.XPATH, "//button[text()='Request']")

    # ボタンをクリック
    request_button.click()

    # 完了を待つ(必要ならば適切な待機を追加)
    time.sleep(5)

    print("Request completed.")

except Exception as e:
    print(f"An error occurred: {e}")

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

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