Python中如何使用selenium处理或创建提示框?
selenium 登陆之后弹出一个提示框或者 div 有什么实现的方法,作用:告诉用户不要乱动,正在自动化操作
Python中如何使用selenium处理或创建提示框?
4 回复
js = ‘’ # 这里可以用 Js 写一个弹窗出来,然后过一会关闭(注意不能直接使用 alert,不然会 block 住)
driver.execute_script(js)
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 初始化浏览器
driver = webdriver.Chrome()
# 1. 处理JavaScript原生提示框
driver.get("https://example.com")
# 触发alert
driver.execute_script("alert('这是一个警告框');")
time.sleep(1)
# 切换到alert并接受
alert = Alert(driver)
print("Alert文本:", alert.text)
alert.accept()
# 触发confirm并选择取消
driver.execute_script("var result = confirm('确认删除吗?'); console.log('用户选择:', result)")
time.sleep(1)
Alert(driver).dismiss()
# 处理prompt
driver.execute_script("prompt('请输入姓名:', '默认值')")
time.sleep(1)
alert = Alert(driver)
alert.send_keys("张三")
alert.accept()
# 2. 等待alert出现(推荐方式)
driver.execute_script("setTimeout(() => alert('延迟出现的alert'), 2000)")
try:
WebDriverWait(driver, 3).until(EC.alert_is_present())
Alert(driver).accept()
except:
print("等待alert超时")
# 3. 处理自定义模态框(非原生alert)
# 对于非原生alert,直接定位DOM元素操作
driver.get("https://example.com/modal-page")
modal = driver.find_element("css selector", ".modal-dialog")
if modal.is_displayed():
close_btn = modal.find_element("css selector", ".close-button")
close_btn.click()
# 4. 创建提示框(通过注入JavaScript)
def create_custom_alert(driver, message):
script = f"""
var div = document.createElement('div');
div.id = 'custom-alert';
div.innerHTML = '{message}<button onclick="this.parentNode.remove()">确定</button>';
div.style.cssText = 'position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:white;padding:20px;border:2px solid #000;z-index:9999';
document.body.appendChild(div);
"""
driver.execute_script(script)
create_custom_alert(driver, "这是自定义提示框")
time.sleep(2)
driver.execute_script("document.getElementById('custom-alert').remove()")
driver.quit()
核心要点:
- 原生提示框:使用
Alert(driver)处理alert/confirm/prompt,通过accept()/dismiss()/send_keys()交互 - 等待机制:用
WebDriverWait配合EC.alert_is_present()处理动态出现的提示框 - 自定义模态框:直接定位DOM元素操作,不要用Alert类
- 创建提示框:通过
execute_script()注入JavaScript动态创建
注意区别:Selenium的Alert类只适用于浏览器原生提示框(JavaScript的alert/confirm/prompt),对HTML/CSS自定义的模态框无效。
建议直接操作DOM处理自定义弹窗。
js = “alert(‘提示信息’)”,我这样试了,跑不过
ERROR - (‘unexpected alert open: {Alert text : 提示信息}\n (Session info: chrome=75.0.3770.100)’, None, None, None

