【Python3】Seleniumでアラートを操作する方法
おはこんばんにちは、せなです。
今回はSeleniumでアラートを操作する判定する方法を説明したいと思います。
初めに
アラートには以下の3種類が存在すると思います。
- alert: OKのみのボックス
- confirm: OK、キャンセルのボックス
- prompt: 入力フォーム付きのボックス
操作方法はいずれも同様のものとなりますが、promptは入力も含まれるため少し異なります。
アラートが表示されるまで待機する
アラートを待機する際には「alert_is_present()」を使用します。
WebDriverWaitのuntilメソッドと併用することで、指定したタイムアウト時間まで待機しつつ
アラートが表示される(Trueになる)まで待機することができます。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.alert import Alert
# chromeを使用
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com/')
# タイムアウト時間を10秒に設定
wait = WebDriverWait(driver, 10)
# アラートを実行
driver.execute_script("window.confirm('Confirm');")
# try/catchでタイムアウト判定を行う
try:
# アラートが表示されるまで待機
wait.until(EC.alert_is_present())
except TimeoutException as e:
### 例外処理
print(e)
# アラート情報の保存
alert = Alert(driver)
アラートのボタンを押下する
アラートのボタンを押下する場合は「accept」と「dismiss」で対応することができます。
補足ですが、ボタンがOK以外のsuccessや承認などの別の表記となっていても全てaccept()メソッドで対応できます。(キャンセルも同様)
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.alert import Alert
# chromeを使用
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com/')
# アラートを実行
driver.execute_script("window.confirm('Confirm');")
# アラート情報の保存
alert = Alert(driver)
# アラートのOKボタンを押下
alert.accept()
# アラートのキャンセルを押下
# alert.dismiss()
アラートのダイアログテキストを取得する
ダイアログテキストの取得は簡単でAlertクラスで取得した情報からtextを返却するだけです。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.alert import Alert
# chromeを使用
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com/')
# アラートを実行
driver.execute_script("window.alert('Alert');")
# アラート情報を取得
alert = Alert(driver)
# アラートのテキスト取得
text = alert.text
アラートのフォームへテキストを入力する
promptのフォームへ入力したい場合は「send_keys()」を使用しましょう。
また、入力フォームが2つ以上あるときには「send_keys('hoge’+ u’\ue004’ + 'huga’)」のようにキーを入力しておくことで対応できますね。(WebDriverキーについて)
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.alert import Alert
# chromeを使用
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com/')
# アラートを実行
driver.execute_script("window.prompt('Prompt');")
# アラート情報の保存
alert = Alert(driver)
# アラートのテキストを入力
alert.send_keys("Selenium")
ディスカッション
コメント一覧
まだ、コメントがありません