前戏

我们常见的弹框有三种,一种是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弹框的更多相关文章

  1. js弹框处理

    # -*- coding:utf-8 -*- """ js弹框处理 """ from selenium import webdriver d ...

  2. js弹框3秒后自动消失

    开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...

  3. selenium对Alert弹框的多种处理

    Alert弹框是一个很烦人的控件,因为当前页面如果弹出了该弹框,你必须要处理它,不然你就不能操作页面的其它元素,下面我列出了alert弹框在多种场景下的处理办法. 明确知道系统哪个地方会弹alert ...

  4. 【前端开发】--js弹框

    js三种弹框 一.普通弹框 这类弹框就是仅仅是个提示作用,并不会做其它操作 关键词:alert()    这个没啥好说的,就是一个弹框.  二.判断弹框     这类框有一个判断作用 关键字:conf ...

  5. Java+Selenium操作日期时间选择框插件

    在自动化测试的时候我们经常会碰到下面的时间日期插件(这个时候这个文本框是不运行我们输入时间的), 我们可以用java获取当前日期,然后用Selenium结合JS代码就可以直接往文本框输入内容. 像这种 ...

  6. js弹框的3种方法

    js的三种弹框的方法 1.第一种 :  alert("1"); 2.第二种 :  window.open("Tests2.html"); var r = con ...

  7. 可以替代alert 的漂亮的Js弹框

    1 基本弹框 2确认框 3又一种确认框 4带返回的弹框 5带返回的探矿 6 6 一切尽在 http://t4t5.github.io/sweetalert/

  8. selenium 操作复选框

    场景 从上一节的例子中可以看出,webdriver可以很方便的使用findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象, 这时候就需要使用findElements方法. 定 ...

  9. js弹框怎么获得父页面的元素

    js获取父页面的元素可以用$(window.parent.document).find("#customer_id").val();这里的customer_id表示父页面某一个元素 ...

随机推荐

  1. Github问题:fatal: unable to access 'https://github.com/LIU-HONGYANG/Algorithm.git/': The requested URL returned error: 403

    在向服务器push之后,出现如下问题: The requested URL returned error: 403 解决路径如下: 参考文章: https://stackoverflow.com/qu ...

  2. SQL忽略重复键作用

    1.插入时如果开启的话,发现重复键会忽略,否则报错 2.更新时不管开启是否都会报错

  3. sql server生成随机id

    SQL Server中生成随机ID的函数是newId(),但是这样生成出来的随机ID是36位带[-]符号的. select newId(); -- 746516E0-95D6-4BAF-8826-6C ...

  4. 浅析libuv源码-node事件轮询解析(2)

    上一篇讲了轮询的边角料,这篇进入正题.(竟然真有人看我博客,上两个图给你们整理下思路) 这是轮询总流程图. 下图为本节内容简图. Poll for I/O The loop blocks for I/ ...

  5. C# while循环

    一.简介 只要给定条件为true,C#的while循环语句会循环重新执行一个目标的语句. 二.语法 C# while的语法: while(循环条件) { 循环体: } 三.执行过程 程序运行到whil ...

  6. 9、VUE过渡和动画

    1.过渡效果 Vue提供了transition的封装组件,在下列情形中,可以给任何元素和组件添加entering/leaving过渡. 我们注意到,<transition>标签的标记是 n ...

  7. .net mvc 几种跨域获取数据方案

    方案一: 在web.conflg配置文件system.webServer节点中添加以下节点配置 <!--允许 "所有网站" 跨域访问写法:--><httpProt ...

  8. C#集合中根据多个字段分组 group by linq表达式

    void Main() { var empList =new List<Employee> { , FName = , Sex = 'M'}, , FName = , Sex = 'F'} ...

  9. PIESDKDoNet二次开发配置注意事项

    在安装完PIESDK进行二次开发的过程中会遇到下面几种常见的开发配置问题,就写一个文档总结一下. 1.    新建项目无PIESDK模板问题 关于新建项目时候,找不到下图中的PIEMainApplic ...

  10. WIN10 报错 "此共享需要过时的SMB1协议,而此协议是不安全"的解决方法

    发现新安装的win10能看到其他计算机,但不能共享其他计算的共享文件/夹,出现如下情况:在浏览器里输入:\IP 不能访问到计算机的共享文件夹,或者在桌面上新建一个指向到其他计算机共享文件/夹的快捷方式 ...