Seleniumでボタンをクリックするときは、ボタンの文字列を取得するのがいい

Seleniumでボタンやチェックボックスをクリックしたい時ですが、CSSセレクター等で指定してやるよりも、ボタンの文字列を指定してやるほうがいいです。
理由

  • 動的にHTMLが生成される場合など、セレクターは構造の変化に弱い
  • うまく動かなかった時に文字列のほうが原因究明しやすい

ということで、こんな感じのメソッドを定義してやるのがいいんじゃないでしょうか。

def button_click(button_text):
    buttons = driver.find_elements_by_tag_name("button")

    for button in buttons:
        if button.text == button_text:
            button.click()
            break

追記

Xpathで指定してやるのが変更に強く、簡単そうです。 こっちを推奨。

4. 要素を見つける — Selenium Python Bindings 2 ドキュメント