Seleniumによる自動化テストの実践技法

本記事ではSeleniumを用いた自動化テストの高度な操作方法について解説します。

マウス操作のシミュレーション

  • click(): クリック
  • double_click(): ダブルクリック
  • context_click(): リーチャート
  • move_to_element(a): 要素aに移動
  • drag_and_drop(a,b): aをbへドラッグアンドドロップ
  • click_and_hold(): クリックして押す
  • release(): 押しを解除
from selenium.webdriver.common.action_chains import ActionChains
...
dropdown_element = driver.find_element_by_xpath("//input[@value='ドロップダウン']")
ActionChains(driver).move_to_element(dropdown_element).perform()

例: ドロップダウンメニュー操作

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://115.28.108.130/control.html")
sleep(1)
dropdown = driver.find_element_by_xpath("//input[@value='ドロップダウン']")
ActionChains(driver).move_to_element(dropdown).perform()
driver.find_element_by_link_text("baidu").click()
sleep(5)
driver.quit()

キーボード操作のシミュレーション

from selenium.webdriver.common.keys import Keys
search_box.send_keys("龍騰育才" + Keys.ENTER)

例: 検索操作

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
search_box = driver.find_element_by_id("kw")
search_box.send_keys("龍騰育才")
search_box.send_keys(Keys.ENTER)
sleep(5)
driver.quit()

スクリーンショットの取得

driver.save_screenshot("error.png")

待機処理の方法

  1. 強制待機: time.sleep()
  2. 暗黙的待機: driver.implicitly_wait()
  3. 明示的待機: WebDriverWait().until()

要素検出の待機

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.XPATH, '//td[text()="山田"]')))

JavaScript操作による特殊処理

# 要素のスタイル変更
js = '''
document.getElementById("btn").style.backgroundColor = "red";
'''
driver.execute_script(js)

例: 要素の属性操作

js = 'document.querySelector("#hd1").removeAttribute("hidden");'
driver.execute_script(js)

日付選択器の操作

iframe内要素へのアクセス例:

iframe = driver.find_element_by_id("calendar_iframe")
driver.switch_to.frame(iframe)
date_picker.send_keys("2023-12-31")

ファイル操作

アップロードフォームの操作例:

upload_field = driver.find_element_by_id("file_upload")
upload_field.send_keys("/path/to/testfile.txt")

タグ: Selenium Python 自動化テスト JavaScript操作 WebUIテスト

6月8日 17:35 投稿