selenium中警告弹窗操作

selenium中警告弹窗操作

警告窗口alert()

alert是警告框,只有一个按钮“确定”无返回值,警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert(“文本”)

确认窗口confirm()

confirm是确认框,两个按钮,确定或者取消,返回true或false。确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。语法:confirm(“文本”)

信息输入窗口prompt()

prompt是提示框,返回输入的消息,或者其默认值提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt(“文本”,“默认值”)

下面是一个web前端的页面(filetest.html)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>alert</title>
</head>
<body>

<input type="button" id="alertButton" value="alert" onclick="alertButton()">
<input type="button" id="confirmButton" value="confirm" onclick="confirmButton()">
<input type="button" id="promptButton" value="prompt" onclick="promptButton()">
<script>

    function alertButton() {
        alert('我是普通的alert提示框');
    };

    function confirmButton() {
        var msg = confirm('点击[确定]或者[取消]按钮');
        if (msg) {
            alert('你点击的是[确定按钮]');
        } else {
            alert('你点击的是[取消按钮]');
        }
    };

    function promptButton() {
        var msg = prompt('输入一个值:', '我是默认值');
        if (msg) {
            alert('输入的值为:\n' + msg);
        } else {
            alert('输入值为空');
        }
    };
</script>
</body>
</html>
selenium操作上面三种提示框有以下几种方法:
alertObject.text:获取提示的文本值。
alertObject.accept():点击『确认』按钮。
alertObject.dismiss():点击『取消』或者叉掉对话框。
alertObject.send_keys(message):输入文本,仅适用于prompt方法

由于这些警告框的特性,我们F12都无法选中。所以,selenium在处理起来,首先要经过一个switch_to的过程。另外,当你看到提示框只有提示信息和一个确定按钮时,它就是alert提示框;当你看到提示框中有提示信息和确定/取消按钮都在时,它就是confirm提示框;当你看到提示信息和input框,并且确定和取消按钮都在时,它就是prompt提示框。为什么不提提示框中右上角的叉掉图标,这是根据浏览器的类型不同而决定,有的有这个图标,有的没有,比如Chrome和Firefox就没有,而IE就有。

selenium处理alert()
  1. switch_to.alert方法将webdriver作用域切换到alert提示框上。
  2. 使用text获取提示文本信息、accept()点击确认按钮、dismiss()点击取消或者叉掉提示框。
from selenium import webdriver
import os
import time

driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('filetest.html')
driver.get(file_path)

time.sleep(2)
driver.find_element_by_id('alertButton').click()
time.sleep(1)

#指定要操作alter
alertObject = driver.switch_to.alert
# 这里,alert方法不加括号,以为该方法被 @property 伪装成属性了,具体参考源码
#输出提示框文本信息
print(alertObject.text)  
# text方法也被 @property 伪装成属性了
alertObject.accept()  
# 点击确定按钮
selenium处理confirm()

selenium在处理confirm时,与处理alert类似:

  1. switch_to.alert方法将webdriver作用域切换到alert提示框上。
  2. 使用text获取提示文本信息、accept()点击确认按钮、dismiss()点击取消。
from selenium import webdriver
import os
import time

driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('filetest.html')
driver.get(file_path)

driver.find_element_by_id('confirmButton').click()
time.sleep(1)
alertObject = driver.switch_to.alert
print(alertObject.text)
# 打印提示信息
time.sleep(1)
alertObject.accept()  
# 点击确定按钮
time.sleep(1)
alertObject.accept()  
# 根据前端js代码逻辑,当点击确定按钮后会再弹出一个提示框

confirm提示框中也不能使用alertObject.send_keys()方法。

selenium处理prompt()

selenium在处理prompt时,与处理alert/confirm一样:

  1. switch_to.alert方法将webdriver作用域切换到alert提示框上。
  2. 使用text获取提示文本信息、accept()点击确认按钮、dismiss()点击取消或者叉掉提示框。
  3. 现在使用alertObject.send_keys(message)方法。
from selenium import webdriver
import os
import time

driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('filetest.html')
driver.get(file_path)

driver.find_element_by_id('promptButton').click()
time.sleep(1)
alertObject = driver.switch_to.alert
print(alertObject.text)  
# 打印提示信息
time.sleep(1)

alertObject.send_keys('明天是个好日子')
print(alertObject.text)  
# 打印提示信息
alertObject.accept()  
# 点击确定按钮

print(alertObject.text)  
# 打印提示信息
time.sleep(1)
alertObject.accept()  
# 根据前端js代码,当点击确定按钮后会再弹出一个提示框,我们再次点击确定
time.sleep(2)

driver.find_element_by_id('promptButton').click()
time.sleep(1)
alertObject = driver.switch_to.alert
alertObject.send_keys('hello')
time.sleep(1)
alertObject.dismiss()  
# 什么都不管,直接点击取消,会在弹出一个提示框
time.sleep(1)
# 现在弹出的是一个普通的提示框,点击确定和取消都无所谓,具体根据业务场景来决定
# alertObject.accept()
alertObject.dismiss()
#这个地方需要注意,send_keys直接输入内容不会显示,需要使用accept()确认之后才会看到结果
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

patmos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值