Selenium怎样对JS常见弹出框处理,操作是什么
Admin 2022-08-11 群英技术资讯 1127 次浏览
今天这篇给大家分享的知识是“Selenium怎样对JS常见弹出框处理,操作是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Selenium怎样对JS常见弹出框处理,操作是什么”文章能帮助大家解决问题。alert、confirm、prompt 。该章节主要是学习如何利用 selenium 处理这三种弹出框。奥利给,冲!JavaScript的三种对话框是通过调用 "window对象" 的三个方法 "alert()"、"confirm()" 、"prompt()" 来获得,我们可以利用这些对话框来完成 "js" 的输入和输出,实现与用户进行交互的js代码。
下面就来简单的了解一下这三种对话框吧。
alert 是一个警告框,表现为直接弹出一个提示窗,该提示窗只有一个按钮确定按钮,点击 确定 按钮后无返回值;alert 警告框经常被用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert("文本") 。
alert 警告框代码示例如下:
<html>
<head>
<title>html页面 - alert</title>
<a id="tooltip" href="#" data-toggle="tooltip" title="This is alert" onclick="alert(this.title);">点击我,弹出 alert</a>
</head>
</html>

confirm 是确认框,它有两个按钮,确定 与 取消 ,返回 true 或 false 。确认框用于让用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。 语法:confirm("文本")
confirm 确认框代码示例如下:
<html>
<head>
<title>confirm</title>
</head>
<body>
执行 "选择" 后显示的结果
<script language="JavaScript">
if(confirm("准备好了么?")){
alert("Go!");
}
else{
alert("Hold on!");
}
</script>
</body>
</html>

prompt 是提示框,它会返回输入框输入的消息,或者其默认值;提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt("文本","默认值")
prompt 提示框代码示例如下:
<html>
<head>
</head>
<body>
<script language='JavaScript' type="text/javascript" >
var aa= prompt("What's your name?","Husky");document.write("Welcome to my world, "+aa+"<br>")
</script>
</body>
</html>

以上就是比较常用的三种弹出层的原生 JavaScript 组件。
常用方法如下:
alert、confirm、prompt 里面的文字信息prompt 里面输入文字本地 alert.html 弹窗页面如下:

代码示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome() # 启动 Chrome浏览器的 driver
driver.maximize_window() # Chrome 浏览器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/alert.html') # 打开本地的 "alert.html" 文件
sleep(1)
driver.find_element_by_id('tooltip').click() # 点击页面 id='tooltip' 的元素(会弹出alert)
sleep(1)
alert = driver.switch_to.alert # 选择 alert
print(alert.text) # 打印输出 alert 的内容
alert.accept() # 针对 alert 执行 accept(接受)方法
sleep(2)
driver.quit()
运行结果如下:

本地 confirm.html 弹窗页面如下:

代码示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome() # 启动 Chrome浏览器的 driver
driver.maximize_window() # Chrome 浏览器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html') # 打开本地的 "alert.html" 文件
sleep(1)
confirm = driver.switch_to.alert # 不管是 alert 还是 confirm、cprompt ,"switch_to" 的方式是一样的。
print(confirm.text) # 打印输出 "confirm" 的内容
sleep(1)
confirm.dismiss() # 针对 confirm 执行 dismiss(取消)方法
sleep(1)
alert = driver.switch_to.alert # 选择 confirm 执行 accept(接受)方法后的 alert
print(alert.text) # 打印输出 alert 的内容
sleep(1)
alert.accept() # 针对 alert 执行 accept(接受)方法
sleep(1)
driver.quit()
运行结果如下:

上文的脚本中,我们通过 switch_to 的方法选择 alert 略显得麻烦一些,能不能直接通过 confirm 把它当成一个来处理呢?尝试一下看看…
代码示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome() # 启动 Chrome浏览器的 driver
driver.maximize_window() # Chrome 浏览器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html') # 打开本地的 "alert.html" 文件
sleep(1)
confirm = driver.switch_to.alert # 不管是 alert 还是 confirm、cprompt ,"switch_to" 的方式是一样的。
print(confirm.text) # 打印输出 "confirm" 的内容
sleep(1)
confirm.dismiss() # 针对 confirm 执行 dismiss(取消)方法
sleep(1)
print(confirm.text) # 打印输出 alert 的内容
sleep(1)
confirm.accept() # 针对 confirm 执行 accept(接受)方法
sleep(1)
driver.quit()
运行结果如下:

从这里我们可以发现,不管弹出多少个 alert ,都可以使用同一个 switch_to 的结果一起来做后续的操作,不需要不断的去 switch_to 。因为它是一个系统组件,不管它是什么形态,都可以这样去支持。
OK,接下来还剩下左后一个 弹窗组件 - prompt(),页面如下,有一个输入框,两个按钮,可以选择确定或取消。

代码示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome() # 启动 Chrome浏览器的 driver
driver.maximize_window() # Chrome 浏览器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/prompt.html') # 打开本地的 "alert.html" 文件
sleep(1)
prompt = driver.switch_to.alert
print(prompt.text)
sleep(1)
prompt.send_keys('Husky I love U') # "prompt.html" 文件默认输入框里传入的是 "Husky" ,这里我们传入 "Husky I love U"
prompt.accept()
sleep(1)
driver.quit()
运行结果如下:

从上面的动图中我们可以看到打印输出的内容并没有我们输入的内容,与之前文章的 send_keys 不一样,这是因为它是 JavaScript 原生的东西。既然是原生的组件,我们是看不到它的输入过程的,只能是通过 webdriver 来控制它的底层来改变输入的元素内容。所以虽然输入正确,返回也正确,但是在过程中是看不出来的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
内容介绍一、框架架构二、项目内容介绍结构三、框架功能说明四、核心逻辑说明配置文件输出内容介绍请求工具类代码编写case程序主入口执行记录一、框架架构二、项目内容介绍结构三、框架功能说明解决痛点:通过s
内容介绍前言一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容三、语法规则练习总结前言网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学习网络爬虫,对这
Python中执行系统命令常见的几种方法有注意:以下实例代码在Python3 5下运行通过。一、os system方法os system(cmd)在子终端运行系统命令,
这篇文章主要为大家介绍了python密码学各种加密模块教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要个大家分享的是Python常见异常类型处理,编写程序的过程,难免会遇到一些错误,程序逻辑又或者运行与系统发生各种冲突等等,下面我们就来看看那些我们在编程中常遇到的异常都是怎么处理的吧,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008