5.警告框、提示框和确认框操作

webDriver提供了一个api,用于处理JavaScript提供的三种类型的原生弹窗消息(弹窗无法通过网页元素定位)

一、Alerts警告框

显示一条自定义消息, 以及一个用于关闭该警告的按钮, 在大多数浏览器中标记为"确定”(OK). 在大多数浏览器中, 也可以通过按"关闭”(close)按钮将其关闭, 但这始终与“确定”按钮具有相同的作用. 查看样例警告框.

WebDriver可以从弹窗获取文本并接受或关闭这些警告.

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
​
with webdriver.Chrome() as driver:
​
    driver.get(r'https://www.w3school.com.cn/tiy/t.asp?f=hdom_alert')
    driver.switch_to.frame('iframeResult')
    button=WebDriverWait(driver,timeout=3).until(EC.visibility_of_element_located(('xpath','//input')))
    button.click()
    time.sleep(5)
​
    # 等待alert弹出
    alert=WebDriverWait(driver,timeout=3).until(EC.alert_is_present())
    # 打印弹出框所有属性
    print(dir(alert))
    # 获取弹出框文本
    text=alert.text
    print(text)
    time.sleep(2)
​
    # 确认弹窗
    alert.accept()
    time.sleep(3)

二、confirm确认框

确认框类似于警告框, 不同之处在于用户还可以选择取消.

此示例还呈现了警告的另一种实现

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
​
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=hdom_confirm')
    driver.switch_to.frame('iframeResult')
    button=WebDriverWait(driver,timeout=3).until(
        EC.presence_of_element_located(('xpath','//input[@type="button"]')))
    button.click()
​
    # 等待alert弹出
    WebDriverWait(driver,timeout=3).until(EC.alert_is_present())
​
    # 获取alert(不常用,一般在等待alert弹出时获取)
    alert=driver.switch_to.alert
​
    # 获取弹出框文本
    text=alert.text
    print(text)
    time.sleep(3)
​
    # 取消
    # 点击取消后,当前的alert对象就会被销毁
    alert.dismiss()
    time.sleep(3)
​
    # 要拿到新打开的alert需要再获取一遍
    new_alert=WebDriverWait(driver,timeout=3).until(
        EC.alert_is_present()
    )
    print(new_alert.text)
    time.sleep(1)
    # 确认
    new_alert.accept()

三、prompt提示框

提示框与确认框相似, 不同之处在于它们还包括文本输入. 与处理表单元素类似, 您可以使用WebDriver的sendKeys来填写响应. 这将完全替换占位符文本. 按下取消按钮将不会提交任何文本. 查看样例提示框.

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
​
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=hdom_prompt')
    driver.switch_to.frame('iframeResult')
​
    WebDriverWait(driver,timeout=3).until(
        EC.presence_of_element_located(('xpath','//input[@type="button"]'))).click()
​
    # 获取alert弹窗
    alert=WebDriverWait(driver,timeout=3).until(EC.alert_is_present())
​
​
    # 输入信息
    alert.send_keys('test')
    time.sleep(3)
​
    # 确认
    alert.accept()
    time.sleep(3)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值