概要

以下三种弹窗机制现在系统很少有,因为所有的弹窗交互都是基于div层直接实现。
区分弹窗是浏览器的alert窗口还是基于div层的html元素:

  1. 浏览器的alert窗口无法右键点击检查。
  2. 如果弹窗的样式与操作系统或者浏览器一个风格,则一定是alert;如果弹窗的样式与软件系统一个风格,一般都是div层,只需要考虑是否存在iframe即可。

对于是基于div层的弹窗,只需要定位并进行相应的操作就可以了。

1 Alert(警告信息)

Alert弹出框,目的就是显示通知信息,只需用户看完信息后,点击OK(确定)就可以了。
Selenium提供如下方法进行操作:

# 点击OK(确定)按钮
wd.switch_to.alert.accept()

# 获取弹出框的信息内容
wd.switch_to.alert.text

注意:如果我们不去点击它,页面的其它元素是不能操作的。

2 Confirm(确认信息)

Confirm弹出框,主要是让用户确认是否要进行某个操作。 有两个选择供用户选择,分别是OK(确定)和Cancel(取消)。
Selenium提供如下方法进行操作:

# 点击OK(确定)按钮
wd.switch_to.alert.accept()

# 点击Cancel(取消)按钮
wd.switch_to.alert.dismiss()

3 Prompt(提示输入)

出现Prompt弹出框是需要用户输入一些信息,提交上去。
Selenium提供如下方法进行操作:

wd.switch_to.alert.send_keys()

4 示例

打开网址:https://cdn2.byhy.net/files/selenium/test4.html,分别操作alert,confirm,prompt弹出框。

from selenium import webdriver

# 创建Webdriver对象,指明使用Chromedriver,运行Chrome浏览器
wd = webdriver.Chrome()
wd.implicitly_wait(5)

# 调用Webdriver对象的get方法,打开网址
wd.get('https://cdn2.byhy.net/files/selenium/test4.html')

# ------Alert------
wd.find_element_by_id('b1').click()
# 获取Alert对象
alert = wd.switch_to.alert
# 打印弹出框提示信息
print(alert.text)
# 点击确定按钮
alert.accept()

# ------Confirm------
wd.find_element_by_id('b2').click()
# 获取Alert对象
confirm = wd.switch_to.alert
# 打印弹出框提示信息
print(confirm.text)
# 点击确定按钮
confirm.accept()
wd.find_element_by_css_selector('#b2').click()
# 点击取消按钮
confirm.dismiss()

# ------Prompt------
wd.find_element_by_id('b3').click()
# 获取Alert对象
prompt = wd.switch_to.alert
# 打印弹出框提示信息
print(prompt.text)
# 输入信息
prompt.send_keys('Web自动化 - Selenium')
# 点击确定按钮
prompt.accept()
wd.find_element_by_css_selector('#b3').click()
# 点击取消按钮
prompt.dismiss()

# 关闭浏览器并释放进程资源
wd.quit()
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐