selenium--操作JS弹框
前戏
我们常见的弹框有三种,一种是alert弹框,一种是prompt弹框,还有一种是confirm弹框那他们有什么不同呢?不同点就是他们长的不一样,alert弹框有一段文字和一个确定按钮,如下

在来看一下prompt长什么样

confirm长这样

看完上面的三个框,大家应该能区分出什么框是哪种类型的了吧。。。
处理alert弹框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" id="button"
onclick="alert('这是一个alert弹出框')" value="单击此按钮"> </body>
</html>
from selenium import webdriver
import time,unittest
from selenium.common.exceptions import NoAlertPresentException class Test_Alert(unittest.TestCase):
def test_HandleAlert(self):
url = r'E:\JSSCRIPT.html'
self.driver = webdriver.Chrome()
self.driver.get(url)
button = self.driver.find_element_by_id('button')
button.click()
try:
# 使用driver.switch_to.alert()方法获取alert对象
alert = self.driver.switch_to_alert()
time.sleep(2)
# 断言弹出框里的内容
self.assertEqual(alert.text, '这是一个alert弹出框')
# 调用alert对象的accept()方法,模拟鼠标单击alert弹窗上的“确定”按钮
alert.accept()
except NoAlertPresentException as e:
print(e) test1 = Test_Alert()
test1.test_HandleAlert()
处理prompt弹框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" id="button"
onclick="prompt('这是一个prompt弹出框')" value="单击此按钮"> </body>
</html>
from selenium import webdriver
import time,unittest
from selenium.common.exceptions import NoAlertPresentException class Test_prompt(unittest.TestCase):
def test_HandleAlert(self):
url = r'E:\JSSCRIPT.html'
self.driver = webdriver.Chrome()
self.driver.get(url)
button = self.driver.find_element_by_id('button')
button.click()
try:
# 使用driver.switch_to.alert()方法获取alert对象
alert = self.driver.switch_to_alert()
time.sleep(2)
# 断言弹出框里的内容
self.assertEqual(alert.text, '这是一个prompt弹出框')
# 往框里输入值
alert.send_keys('我要搞自动化。。。') # 没输入但是也没报错
time.sleep(4)
alert.accept() # 模拟点击确定按钮
except NoAlertPresentException as e:
print(e) test1 = Test_prompt()
test1.test_HandleAlert()
处理confirm弹框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" id="button"
onclick="prompt('这是一个confirm弹出框')" value="单击此按钮"> </body>
</html>
from selenium import webdriver
import time,unittest
from selenium.common.exceptions import NoAlertPresentException class Test_confirm(unittest.TestCase):
def test_HandleAlert(self):
url = r'E:\JSSCRIPT.html'
self.driver = webdriver.Chrome()
self.driver.get(url)
button = self.driver.find_element_by_id('button')
button.click()
try:
# 使用driver.switch_to.alert()方法获取alert对象
alert = self.driver.switch_to.alert
time.sleep(2)
# 断言弹出框里的内容
self.assertEqual(alert.text, '这是一个confirm弹出框')
# 往框里输入值
alert.send_keys('我要搞自动化。。。') # 没输入但是也没报错
time.sleep(4)
alert.accept() # 模拟点击确定按钮
alert.dismiss() # 点击取消按钮 和上面的取其一
except NoAlertPresentException as e:
print(e) test1 = Test_confirm()
test1.test_HandleAlert()
selenium--操作JS弹框的更多相关文章
- js弹框处理
# -*- coding:utf-8 -*- """ js弹框处理 """ from selenium import webdriver d ...
- js弹框3秒后自动消失
开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...
- selenium对Alert弹框的多种处理
Alert弹框是一个很烦人的控件,因为当前页面如果弹出了该弹框,你必须要处理它,不然你就不能操作页面的其它元素,下面我列出了alert弹框在多种场景下的处理办法. 明确知道系统哪个地方会弹alert ...
- 【前端开发】--js弹框
js三种弹框 一.普通弹框 这类弹框就是仅仅是个提示作用,并不会做其它操作 关键词:alert() 这个没啥好说的,就是一个弹框. 二.判断弹框 这类框有一个判断作用 关键字:conf ...
- Java+Selenium操作日期时间选择框插件
在自动化测试的时候我们经常会碰到下面的时间日期插件(这个时候这个文本框是不运行我们输入时间的), 我们可以用java获取当前日期,然后用Selenium结合JS代码就可以直接往文本框输入内容. 像这种 ...
- js弹框的3种方法
js的三种弹框的方法 1.第一种 : alert("1"); 2.第二种 : window.open("Tests2.html"); var r = con ...
- 可以替代alert 的漂亮的Js弹框
1 基本弹框 2确认框 3又一种确认框 4带返回的弹框 5带返回的探矿 6 6 一切尽在 http://t4t5.github.io/sweetalert/
- selenium 操作复选框
场景 从上一节的例子中可以看出,webdriver可以很方便的使用findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象, 这时候就需要使用findElements方法. 定 ...
- js弹框怎么获得父页面的元素
js获取父页面的元素可以用$(window.parent.document).find("#customer_id").val();这里的customer_id表示父页面某一个元素 ...
随机推荐
- SourceTree 免登录
SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subversion版本控制系统工具.支持 ...
- CyclicBarrier一组线程相互等待
/** * CyclicBarrier 一组线程相互等待 */ public class Beer { public static void main(String[] args) { final ; ...
- Phaser铁人三项
/** * 模拟铁人三项 */ public class PhaserTest { private static Random random = new Random(System.currentTi ...
- Apache Commons 简介
Apache Commons 由多个独立发布的软件包组成,此页面提供了当前可用的 Commons 组件的概述. Components BCEL 字节码工程库 - 分析,创建和操作 Java 类文件. ...
- kubernetes之coredns玩法
一.概述 新版本的kubernetes默认使用了coredns,这里就不赘述了.直达车:https://coredns.io/.https://kubernetes.io/docs/tasks/adm ...
- EF Core中如何设置数据库表自己与自己的多对多关系
本文的代码基于.NET Core 3.0和EF Core 3.0 有时候在数据库设计中,一个表自己会和自己是多对多关系. 在SQL Server数据库中,现在我们有Person表,代表一个人,建表语句 ...
- 使用Alipay代码源,构建自己的Docker镜像
1. alipay 镜像仓库 地址 (自行换成自己的阿里镜像云DockerHub地址) https://cr.console.aliyun.com/repository/ 2.alipay 代码云 地 ...
- WPF布局介绍(1)
开局一张图,内容全靠...,本系列的文章, 主要针对刚入门.亦或是从 winform/bs转过来的开发人员快速入门的指南, 相对于其它一些文章中会详细的从项目如何建立到其实现的原理及组成部分, 本系列 ...
- tempermonkey文档及为google翻译添加清除输入框脚本
想通过tempermonkey为google增加一个清除输入框的快捷键,这本来是很好做的事情,后来也证明确实是那么简单,不过中间遇到了几个奇怪的问题,有必要记录一下 tempermonkey 文档:h ...
- element admin中使用nprogress实现页面加载进度条
主要是知道是nprogress这个组件实现的就可以了,组件的使用方法可参考:https://blog.csdn.net/ltr15036900300/article/details/47321217 ...