彈框
WebDriver提供了一個API, 用于處理JavaScript提供的三種類型的原生彈窗消息. 這些彈窗由瀏覽器提供限定的樣式.;分別為以下三種
- alerts警告框
- confirm確認框
- prompt提示框
話不多說,開始實踐下就知道怎么一回事了
alerts
警告框,顯示一條自定義信息,以及一個關閉按鈕【一般是確定
】;可以使用按鈕進行關閉
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECserve_path = r'D:\Code_Study\driver\chromedriver-win64\chromedriver.exe'
service = Service(serve_path)
browser = webdriver.Chrome(service=service)
browser.get(f'https://www.selenium.dev/documentation/webdriver/interactions/alerts/')# Alerts
# 等待元素可以被點擊
alert_link = WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.LINK_TEXT, "See an example alert")))
alert_link.click()
# 切換到alert彈框并輸出文本內容,點擊確定
alert = browser.switch_to.alert
text = alert.text
print(text)
time.sleep(5)
alert.accept()
confirm
確認框類似于警告框,不同之處在于用戶還可以取消消息
# 等待元素可以被點擊
alert_link = WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.LINK_TEXT, "See a sample confirm")))
alert_link.click()
# 下面這句話也是點擊click,只不過用的js代碼執行的
# browser.execute_script("arguments[0].click();", alert_link)
# 切換到confirm彈框并輸出,點擊確定
alert = browser.switch_to.alert
text = alert.text
print(text)
time.sleep(5)
alert.dismiss()
prompt
提示框和確認框相似,但是它可以進行文本輸入;
點擊取消不會提交文本內容,點擊確定才可以
這里有個坑,不知道是不是我找的這個網站問題;沒辦法輸入文本內容;等到后面找到原因了,會來填坑的
# prompt
alert_link = WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "prompt")))
# alert_link.click()
# 下面這句話也是點擊click,只不過用的js代碼執行的
browser.execute_script("arguments[0].click();", alert_link)
# 切換到prompt彈框并輸出,點擊確定
alert = browser.switch_to.alert
text = alert.text
print(text)
time.sleep(10)
alert.send_keys('hahaha')
time.sleep(10)
alert.accept()
browser.quit()