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()

核心要点:

  1. 原生提示框:使用Alert(driver)处理alert/confirm/prompt,通过accept()/dismiss()/send_keys()交互
  2. 等待机制:用WebDriverWait配合EC.alert_is_present()处理动态出现的提示框
  3. 自定义模态框:直接定位DOM元素操作,不要用Alert类
  4. 创建提示框:通过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

回到顶部