消息框
是指在网页里进行某些操作(点击按钮、点击超级链接等)后,在网页上一层出现弹出来的对话框,对话框里显示要提示给客户的消息。
- JavaScript根据功能把它分为三类
- Alert 提示框
- Confirm 确认框
- Prompt 输入框
- selenium中把它们统称为Alert
消息框的特点
因为并不是网页元素,不是html语法实现的,而是用JavaScript脚本实现的,所以不能像其他网页里的元素那样进行定位。
- 在对话框上点击鼠标右键,无菜单
- 大多数都是模态的,如果不关闭它,后面的网页无法进行操作。
注意:消息框不同于网页里的div标记的元素,虽然div元素(代表网页里的一块区域)可以显示为浮动在其他区域上一层的效果,但是不具备上述两个特点。
Alert类
Alert类:是Selenium中消息框处理的专用类
初始化Alert类对象
# 切换到消息框,得到Alert对象实例
对象 = driver.switch_to.alert
Alert类属性和方法
Alert类对象属性:记录消息框里的信息
变量 = 对象.text # str类型消息框里的信息
Alert类对象方法:用于操作消息框
对象.accpet() # 点击确定/确认按钮
对象.dismiss() # 点击取消按钮
对象.send_keys(数据) # 向prompt类型消息框里输入数据
常见异常
- UnexpectedAlertPresentException:在网页上层有消息框时,没有处理消息框(没有关闭它),就想操作网页,此时就会抛出此异常,提醒必须要关闭消息框之后,才能操作网页
- NoAlertPresentException:消息框已经关闭或消息框根本没有弹出来,执行切换或执行关闭语句时,就会抛出此异常。
"""
打开ECShop前台登录页
点击"立即登陆",等待3秒
切换到消息框
获得其文本,打印出来
点击"确定"按钮
"""
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox() # 启动浏览器
driver.get('http://localhost/upload/user.php')
driver.find_element(By.NAME,'submit').click() # 点击 登录按钮
a1 = driver.switch_to.alert
t1 = a1.text
print(t1)
a1.accept()
sleep(3)
driver.quit()
"""
打开"三星SGH-F258"商品详情页(http://localhost/upload/goods.php?id=19)
点击"加入购物车",等待3秒
切换到消息框
获得其文本,打印出来
点击"取消"按钮
点击"加入收藏夹
切换到消息框
获得其文本,打印出来
点击"确定"按钮
"""
"""
打开http://www.sahitest.com/demo/promptTest.htm
点击Click For Prompt按钮,等待3秒
切换到消息框
输入hello
点击"确定"
打印文本框当前内容
"""