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)
相关推荐
小小测试开发3 小时前
提升WebUI自动化效率与性能:从脚本到架构的全链路优化指南
运维·架构·自动化
weixin_307779136 小时前
Jenkins中的Jakarta Activation API插件:功能、使用与最佳实践
运维·开发语言·ci/cd·自动化·jenkins
0思必得08 小时前
[Web自动化] HTML列表标签
运维·python·自动化·html·web自动化
Cherry的跨界思维9 小时前
19、自动化处理双核心:Java规则引擎与Python Selenium实战全解析
java·开发语言·python·自动化·办公自动化·python办公自动化·python办公
秋刀鱼 ..10 小时前
第十一届金融创新与经济发展国际学术会议
运维·人工智能·科技·金融·自动化
一水鉴天11 小时前
整体设计 定稿 备忘录仪表盘方案 之3 改造 为 “整体设计”的完整方案(初稿)之2 程序讨论和准备(豆包助手 )
人工智能·架构·自动化
Splashtop高性能远程控制软件11 小时前
索尼 Hawk-Eye(鹰眼)携手 Splashtop,远程技术赋能赛事运营革新
运维·网络·自动化·远程控制·远程桌面
黑客思维者11 小时前
Python自动化截图/录屏3大方案(PIL/mss/ffmpeg)深度拆解
python·ffmpeg·自动化·录屏
基哥的奋斗历程13 小时前
Jenkins-CICD持续集成自动化部署指南
ci/cd·自动化·jenkins
未来之窗软件服务13 小时前
幽冥大陆(四十六)人工智能自动化交互系统ASR2——东方仙盟筑基期
运维·自动化·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟vos智能浏览器·东方仙盟自动化