私の読書ノートに追加するべき Python Selenium 利用ノートの草稿。

Python Selenium 利用ノート

概要は説明しない。

動機

当パッケージを利用する動機を述べる。特になぜ BeautifulSoup4 だけでは不満なのかを述べる。

導入

  • Python 側のタスクを述べる。
  • WebDriver 側のタスクを述べる。
    • ブラウザーにより導入手順が異なる。私は Microsoft Edge を使いたいのでそれしか述べない。
      • MS Edge はドライバーを OS の機能により入手できることを述べる。

コード例

Selenium に直接関係するコードしか記さない。

  • 特定の URL が指し示す HTML ファイルをブラウザーで開くコード
  • 開いているブラウザーを閉じるコード
    • ケース:driver.close()
    • ケース:driver.quit()
  • 特定の HTML 要素を locate するコード
    • 公式文書の記述で十分と思われる。
  • HTML 要素に対して
    • 属性を得るコード
    • タグが挟むテキストを得るコード
  • form 上のテキストボックスに何かを記入するコード
  • form 上のコントロールの状態を更新するコード
  • 記入済みフォームを投稿するコード
  • ページのロード完了を待つコード
    • ケース:単に title が見られればいい
    • ケース:特定のコントロールがアクセス可能になることが必要である
    • ケース:その他
  • 待機に関するコード
    • driver.implicitly_wait() による共通の待機時間上限を設定をするコード
    • コントロール単位での待機
      • 公式文書の記述で十分と思われる。
  • キー操作に関するコード
    • ケース:ドキュメントを意識しないキー操作を実行するコード
    • ケース:特定の HTML 要素に対するキー操作を実行するコード

テスト&デバッグのコツ

職人的な技法がありそうだ。

応用例

  • wifiota.py: 大田区図書館の Free Wi-Fi 再接続を要求する際に実行するスクリプト。
  • mjnet.py: セガ MJ Arcade ユーザーサイト MJ.NET のゲームスコアを自動的に取得するスクリプト。

参考資料

  • Selenium 公式文書
  • よく見かける逆引き辞書サイト
  • Stack Overflow で参考にしたポスト群