14-alert\confirm\prompt\自定义弹窗

一、认识alert\confirm\prompt

下图依次是alert、confirm、prompt,先认清楚长什么样子,以后遇到了就知道如何操作了。

二、alert操作

  1. 先用driver.switch_to.alert方法切换到alert弹出框上;
  2. 可以用text方法获取弹出的文本信息;
  3. accept()方法相当于点击"确认"按钮;
  4. dismiss()方法相当于点击右上角的x,取消弹出框。
python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('A.html')
time.sleep(1)

# 点击主页面上的alert按钮
driver.find_element('id', 'alert').click()
time.sleep(1)

# 切换到alert框
t = driver.switch_to.alert

# 打印alert框中的文本信息
print(t.text)

# 点击alert框中的确认按钮
t.accept()

# 相当于点右上角的x,取消弹出框。
# t.dismiss()

三、confirm操作

  1. 先用driver.switch_to.alert方法切换到confirm弹出框上;
  2. 可以用text方法获取弹出的文本信息;
  3. accept()方法相当于点击"确认"按钮;
  4. dismiss()方法相当于点击"取消"按钮。
python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('A.html')
time.sleep(1)

# 点击主页面上的confirm按钮
driver.find_element('id', 'confirm').click()
time.sleep(1)

# 切换到confirm框(这里用的也是driver.switch_to.alert)
t = driver.switch_to.alert

# 打印confirm框中的文本信息
print(t.text)

# 点击confirm框中的确认按钮
t.accept()

# 点击confirm框中的取消按钮
# t.dismiss()

四、prompt操作

  1. 先用driver.switch_to.alert方法切换到prompt弹出框上;
  2. 可以用text方法获取弹出的文本信息;
  3. accept()方法相当于点击"确认"按钮;
  4. dismiss()方法相当于点击"取消"按钮;
  5. 可以用send_keys()方法向prompt输入框中输入文本内容。
python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('A.html')
time.sleep(1)

# 点击主页面上的prompt按钮
driver.find_element('id', 'prompt').click()
time.sleep(1)

# 切换到prompt框(这里用的也是driver.switch_to.alert)
t = driver.switch_to.alert

# 打印prompt框中的文本信息
print(t.text)

# 向prompt输入框中输入文本内容
t.send_keys('我是prompt框')

# 点击prompt框中的确认按钮
t.accept()

# 点击prompt框中的取消按钮
# t.dismiss()

五、自定义弹窗

由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用selenium自带的方法无法处理,此时就需要通过JS代码来处理了。这里以新世界教育网为例:https://sh.xsjedu.org/riyu/zt/006/

上图中的这种蓝色弹窗就是现在主流的表现形式,处理这种弹窗可以利用JS代码进行处理,这种元素对象有一个display属性,可以设置元素是否显示。

python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://sh.xsjedu.org/riyu/zt/006/')
time.sleep(1)

js = 'document.getElementsByClassName("tanchuang")[0].style.display="none";'
driver.execute_script(js)
相关推荐
带娃的IT创业者1 小时前
深度解析:从 GitHub 热门项目看 SEO 自动化的技术架构演进
架构·自动化·github·seo·技术架构·反爬虫
极客老王说Agent2 小时前
自动化架构演进:2026年有比RPA更加稳定的技术吗?
人工智能·ai·chatgpt·架构·自动化·rpa
半导体守望者3 小时前
AE电源闭环控制——反应溅射的集成解决方案
经验分享·学习·机器人·自动化·制造
逻极3 小时前
Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战
人工智能·windows·stm32·自动化·gpu·amd·ollama
乌托邦2号3 小时前
Qt实现CS的自动化构建流程
qt·自动化
半导体守望者4 小时前
AE AZX射频调谐器射频负载匹配(调谐)原理PPT
学习·机器人·自动化·制造·模块测试
快乐的哈士奇5 小时前
Gmail-邮件自动处理系统
node.js·自动化·excel
MXsoft6185 小时前
**用自动化脚本给MAC误阻断留条后路:可审计、可回滚的准入控制方案**
运维·macos·自动化
ai_coder_ai5 小时前
在自动化脚本中如何调用大语言模型?
运维·语言模型·自动化
江畔柳前堤6 小时前
github实战指南04-Actions 自动化实战
运维·自动化·github