これまで実際に使用した Selenium の Python コードをまとめました。
これで大体のブラウザ操作は実装出来ると思います。
機能別
ブラウザの生成
- Chrome
from selenium import webdriver
browser = webdriver.Chrome()
以降 browser インスタンスの生成処理は省略します。
要素の取得
- id を指定して要素を取得する
element = browser.find_element_by_id('targetId')
- class を指定して要素を取得する
elements = browser.find_elements_by_class_name('target-class')
- セレクタを指定して要素を取得する
element = browser.find_element_by_css_selector('#targetId')
- タグを指定して要素を取得する
from selenium.webdriver.common.by import By
elements = browser.find_elemens(By.TAG_NAME, 'tr')
指定した画面に遷移する
url = 'http://test.co.jp'
browser.get(url)
別ウィンドウをアクティブにする
# ウィンドウが2つ表示されている場合、2つ目のウィンドウをアクティブにする
browser.switch_to_window(browser.window_handles[1])
別ウィンドウが表示されるまで待機する
from selenium.webdriver.support.ui import WebDriverWait
# 今ウィンドウが1つ開いていてもう1つウィンドウが表示されるまで3秒待つ
WebDriverWait(browser, 3).until(lambda b: len(b.window_handles) > 1)
テキストボックスに値を設定する
textbox = browser.find_element_by_id('someTextbox')
textbox.send_keys('input text')
プルダウンから選択する
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
# 下記プルダウンからvalueが1のものを選択する
# <select name="sample"></select>
# <option value="0">0</option>
# <option value="1">1</option>
element = browser.find_elemens(By.TAG_NAME, 'select')[0]
select_element = Select(element)
select_element.select_by_value('1')
ボタンをクリックする
btn = browser.find_element_by_id('someBtn')
btn.click()
ダイアログ
- ダイアログの「OK」をクリックする
from selenium.webdriver.common.alert import Alert
# ダイアログの「OK」をクリックする
Alert(browser).accept()
シーン別
ユーザIDとパスワードを入力してログインする
from selenium import webdriver
browser = webdriver.Chrome()
# ログイン画面に遷移
browser.get('http://test.co.jp/Home/Login')
# ユーザIDとパスワードを入力
userid_textbox = browser.find_element_by_id('userId')
userid_textbox.send_keys('testUser')
password_textbox = browser.find_element_by_id('password')
password_textbox.send_keys('1234QWER')
# ログインボタンをクリック
login_btn = browser.find_element_by_id('login')
login_btn.click()
ボタン名から適切なボタンを判別してクリックする
from selenium import webdriver
browser = webdriver.Chrome()
# クラス名からボタンを取得し、ボタン名から必要なボタンを絞る
btns = browser.find_elements_by_class_name('some-button')
for btn in btns:
if btn.text == '欲しいボタン':
btn.click()
break
リクエスト送信後に表示される完了ダイアログの「OK」ボタンをクリックする
from selenium.webdriver.common.alert import Alert
from selenium import webdriver
import time
browser = webdriver.Chrome()
# ボタンをクリックし、リクエストを送る
submit_request_btn = browser.find_element_by_id('submitRequestBtn')
submit_request_btn.click()
# 念のため待機
time.sleep(1)
# 完了ダイアログの「OK」をクリックする
Alert(browser).accept()
ボタンクリック後新しいウィンドウが表示されたら新しいウィンドウに切り替える
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
# ボタンをクリックし、新しいウィンドウを表示する
create_new_window_btn = browser.find_element_by_id('createNewWindowBtn')
create_new_window_btn.click()
# 新しいウィンドウが表示されたら新しいウィンドウに切り替える
WebDriver(browser, 3).until(lambda b: len(b.window_handles) > 1)
browser.switch_to_window(browser.window_handles[1])