Selenium16--切换消息框

消息框

是指在网页里进行某些操作(点击按钮、点击超级链接等)后,在网页上一层出现弹出来的对话框,对话框里显示要提示给客户的消息。

  • 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
点击"确定"
打印文本框当前内容
"""


posted @ 2022-12-15 21:55  暄总-tester  阅读(144)  评论(0)    收藏  举报