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 小时前
【自动化运维神器Ansible】Ansible常用模块之File模块详解
运维·自动化·ansible·file·常用模块
水瓶_bxt5 小时前
创建 GitLab Runner 使用CICD自动化部署容器
eureka·自动化·gitlab
feifeigo12317 小时前
自动化运维:从脚本到DevOps的演进
运维·自动化·devops
Freshman小白18 小时前
Fluent自动化仿真(TUI命令脚本教程)
自动化·脚本·仿真
深圳安锐科技有限公司18 小时前
基坑渗压数据不准?选对渗压计能实现自动化精准监测吗?
安全·自动化·自动化监测·大坝监测·渗压计
晴天彩虹雨18 小时前
统一调度与编排:构建自动化数据驱动平台
大数据·运维·数据仓库·自动化·big data·etl
IT成长日记21 小时前
【自动化运维神器Ansible】Ansible常用模块之Copy模块详解
运维·自动化·ansible·copy·常用模块、
程序员小远1 天前
Pytest+Selenium UI自动化测试实战实例
自动化测试·软件测试·python·selenium·测试工具·ui·pytest
TRACER~851 天前
移动端自动化Appium框架
运维·appium·自动化
贺贺丿1 天前
Docker2-容器应用工具及docker命令
linux·运维·docker·容器·自动化·云计算