業務の自動化をする際、Seleniumをちょこちょこ利用します。その時によく利用する操作メソッドがあります。わたしがよく利用する操作メソッドをご紹介します。
ブラウザの操作
ブラウザを起動する
driver.get("URL")
ブラウザのファイルダウンロードフォルダを指定する
downloadDir = 'ダウンロードでしたいパスに置き換える'
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
"download.default_directory": downloadDir
})
driver = webdriver.Chrome(options=options)
ページを遷移する
driver.get("URL")
進む、戻る
# ブラウザの「進む」
driver.forward()
# ブラウザの「戻る」
driver.back()
ブラウザの更新
driver.refresh()
ブラウザを最大化する
driver.maximize_window()
ウィンドウを閉じる、すべてのウィンドウを閉じる
# ウィンドウを閉じる
driver.close()
# すべてのウィンドウを閉じる
driver.quit()
開いているページ全体の情報取得系
ページのURLを取得する
driver.current_url
ページのタイトルを取得する
driver.title
ソースを取得する
driver.page_source
スクリーンショットを保存する
driver.get_screenshot_as_file("スクリーンショットを保存したいパス")
開いているページの要素の情報取得系
テキストを取得する
# idで指定
driver.find_element_by_id("id").text
# classで指定
driver.find_element_by_class_name("className").text
# xpathで指定
driver.find_element_by_xpath("xpath").text
リンクテキストを取得する
# リンクテキストの完全一致で取得する
driver.find_elements_by_link_text('リンクテキスト')
# リンクテキストの部分一致で取得する
driver.find_elements_by_partial_link_text('リンクテキスト')
開いているページの要素の操作系
要素を指定してクリックする
# idでの指定
driver.find_element_by_id("id").click()
# classでの指定
driver.find_element_by_class_name("className").click()
# xpathでの指定
driver.find_element_by_xpath("xpath").click()
リンクテキストをクリックする
# リンクテキストの完全一致でクリックする
driver.find_elements_by_link_text('リンクテキスト').click()
# リンクテキストの部分一致でクリックする
driver.find_elements_by_partial_link_text('リンクテキスト').click()
テキストボックスに値を入力する
driver.find_element_by_id("id").send_keys("入力したい文字列")
driver.find_element_by_class_name("className").send_keys("入力したい文字列")
driver.find_element_by_xpath("xpath").send_keys("入力したい文字列")
send_keysで入力するとき、特殊なキー入力でよく利用するものは以下のとおりです。
入力するキー | send_keysでの指定方法 |
Enterキー | Keys.ENTER |
Deleteキー | Keys.DELETE |
Tabキー | Keys.TAB |
スペースキー | Keys.SPACE |
ドロップダウンリストを操作する
# 以下をインポートする必要あり
from selenium.webdriver.support.select import Select
# 要素を取得する
element = driver.find_element_by_id("id")
# indexで選択する
Select(element).select_by_index(index)
# 値で選択する
Select(element).select_by_visible_text("text")
待ち系
ページのロードの待ち時間を設定する
driver.set_page_load_timeout(10)
もし、ページのロードの待ち時間が過ぎてもページロードが完了しなかった場合、TimeoutException
が発生します。以下のような感じでtry-except
でコーディングします。
driver.set_page_load_timeout(10)
try:
driver.get("URL")
# 10秒以内にページが完全にロードされた場合は以下を出力
print("ページロード完了")
except:
# 10秒かかってもページのロードが完了しなかった場合は以下を出力
print("ページロードに10秒以上の時間がかかりました")
javascript実行完了の待ち時間を設定する
driver.set_script_timeout(10)
もし、javascript
のロードの待ち時間が過ぎてもページロードが完了しなかった場合、TimeoutException
が発生します。上述のようにtry-except
で処理します。
要素が見つかるまでの待ち時間を設定する
driver.implicitly_wait(10)
もし、要素が見つからなかった場合、NoSuchElementException
が発生します。上述のようにtry-except
で処理します。 上述のようにtry-except
で処理します。
コメント