【Selenium】よく利用する操作メソッド

業務の自動化をする際、Seleniumをちょこちょこ利用します。その時によく利用する操作メソッドがあります。わたしがよく利用する操作メソッドをご紹介します。

Seleniumで利用する言語はPython、利用するブラウザはChromeのみでのご紹介です。

ブラウザの操作

ブラウザを起動する

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で処理します。

コメント

タイトルとURLをコピーしました