Python利用Selenium实现弹出框的处理

目录
  • JavaScript三种弹出对话框的简单介绍
    • alert() - 警告框
    • confirm() - 确认框
    • cprompt() - 提示框
  • selenium 处理弹出对话框的常用方法
    • selenium 处理 alert() 弹窗
    • selenium 处理 confirm() 弹窗
    • selenium 处理 prompt() 弹窗

现如今经常出现在网页上的基于 JavaScript 实现的弹出框有三种,分别是 alert、confirm、prompt 。该章节主要是学习如何利用 selenium 处理这三种弹出框。奥利给,冲!

JavaScript三种弹出对话框的简单介绍

JavaScript的三种对话框是通过调用 "window对象" 的三个方法 "alert()"、"confirm()" 、"prompt()" 来获得,我们可以利用这些对话框来完成 "js" 的输入和输出,实现与用户进行交互的js代码。

下面就来简单的了解一下这三种对话框吧。

alert() - 警告框

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() - 确认框

confirm 是确认框,它有两个按钮,确定 与 取消 ,返回 truefalse 。确认框用于让用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 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>

cprompt() - 提示框

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 组件。

selenium 处理弹出对话框的常用方法

常用方法如下:

  • text:返回 alert、confirm、prompt 里面的文字信息
  • accept:接受
  • dismiss:取消
  • send_keys:向 prompt 里面输入文字

selenium 处理 alert() 弹窗

本地 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()

运行结果如下:

selenium 处理 confirm() 弹窗

本地 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 。因为它是一个系统组件,不管它是什么形态,都可以这样去支持。

selenium 处理 prompt() 弹窗

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 来控制它的底层来改变输入的元素内容。所以虽然输入正确,返回也正确,但是在过程中是看不出来的。

以上就是Python利用Selenium实现弹出框的处理的详细内容,更多关于Python Selenium弹出框的资料请关注我们其它相关文章!

(0)

相关推荐

  • python上selenium的弹框操作实现

    selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示: selenium 提供switch_to_alert()方法定位到 alert/confifirm/prompt对话框. 2,操作 1,页面弹框 页面弹框是属于HTML里面的元素,它是由用户在操作页面的时候在本页面弹出的.所以科研直接在页面上定位到 步骤: 1,用户操作后,弹出页面弹框 2,直接定位弹框元素,进行操

  • python自动化测试selenium核心技术处理弹框

    页面上的弹框一般有三种: (1)alert:用来提示 (2)confirm:用来确认 (2)prompt:输入内容 示例网站:http://sahitest.com/demo 示例场景:打开Sahi Tests页面, (1)点击"Alert Test"页面,鼠标点击页面中"Click For Alert"按钮,弹出警告提示框,判断页面是否存在alert,如存在则切换到警告框,并获取警告文本信息,之后点警告框中的确定按钮. (2)点击"Confirm Pag

  • java selenium操作弹出对话框示例讲解

    Web 开发人员通常需要利用JavaScript弹出对话框来给用户一些信息提示, 包括以下几种类型 阅读目录 对话框类型 测试页面 Selenium 操作对话框的代码 对话框类型 1.  警告框: 用于提示用户相关信息的验证结果, 错误或警告等 2. 提示框: 用于提示用户在当前对话框中输入数据,一般需要用户单击取消或者确认按钮 3. 确认框: 用于提示用户确认或者取消某个操作,一般需要用户单击取消或者确认按钮 测试页面 用如下页面为例进行讲解, 包括了警告框,提示框,确认框 http://si

  • Python爬虫之Selenium警告框(弹窗)处理

    JavaScript 有三种弹窗 Alert (只有确定按钮), Confirmation (确定,取消等按钮), Prompt (有输入对话框),而且弹出的窗口是不能通过前端工具对其进行定位的,这个时候就可以通过switch_to.alert方法来定位这个弹窗,并进行一系列的操作. 本章中用到的关键方法如下: switch_to.alert:定位到警告框 text:获取警告框中的文字信息 accept():接受现有警告框(相当于确认) dismiss():解散现有警告框(相当于取消) send

  • python selenium 弹出框处理的实现

    弹出框有两种:页面弹出框(可定位元素能操作).Windows弹出框(不能直接定位) 一.页面弹出框 等待弹出框出现之后,定位弹出框,操作其中元素 如: driver = webdriver.Chrome() driver.get("https://www.baidu.com") driver.maximize_window() #点击百度登录按钮 driver.find_element_by_xpath('//*[@id="u1"]//a[@name="t

  • Python利用Selenium实现弹出框的处理

    目录 JavaScript三种弹出对话框的简单介绍 alert() - 警告框 confirm() - 确认框 cprompt() - 提示框 selenium 处理弹出对话框的常用方法 selenium 处理 alert() 弹窗 selenium 处理 confirm() 弹窗 selenium 处理 prompt() 弹窗 现如今经常出现在网页上的基于 JavaScript 实现的弹出框有三种,分别是 alert.confirm.prompt .该章节主要是学习如何利用 selenium

  • python+pyqt实现右下角弹出框

    本文实例为大家分享了pyqt实现右下角弹出框的具体代码,供大家参考,具体内容如下 构造函数中: self.desktop=QDesktopWidget() self.move((self.desktop.availableGeometry().width()-self.width()),self.desktop.availableGeometry().height()) #初始化位置到右下角 self.showAnimation() #弹出动画 def showAnimation(self):

  • JS利用cookies设置每隔24小时弹出框

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function cookieGO(name) { var today = new Date(); var expires = new Date(); expires.setTime(today.getTime() + 1000*60*60*24); setCookie("cookievalue", name, expires); } function setCookie(name, value, expire) { window.

  • 详解用vue编写弹出框组件

    前言 最近研究了用vue编写弹出框的组件,发现其实这里面的门道还是有很多的.这篇文完全是用来记录总结下最近的学习成果,同时也希望能够帮得上正在学习纠结的你~ps:本文假设你已经了解vue2.0相关框架,因此适合有一定vue2.0基础的同学阅读. 设计组件的思考 其实单纯的编写一个弹出框组件并不难,写一个模板,然后用v-if或者v-show指令还控制组件的出现与消失.真正困扰我的是,这个组件的调用方式,这个问题纠结了我好久. 调研了下资料,有些人建议,直接把组件标签插进模板中,然后通过直接控制组件

  • js弹出框、对话框、提示框、弹窗实现方法总结(推荐)

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); } //弹出一个询问框,有确定和取消按钮 function firm() { //利用对话框返回的值 (true 或者 false) if (confirm("你确定提交吗?")) { aler

  • 使用vue实现各类弹出框组件

    简单介绍一下vue中常用dialog组件的封装: 实现动态传入内容,实现取消,确认等回调函数. 首先写一个基本的弹窗样式,如上图所示. 在需要用到弹窗的地方中引入组件: import dialogBar from './dialog.vue' components:{ 'dialog-bar': dialogBar, }, <dialog-bar></dialog-bar> 点击一个按钮显示弹窗,并保证关闭弹窗后再次点击依旧显示 在弹窗组件中定义一个value值:v-model=&

  • vue实现点击出现操作弹出框的示例

    如上图所示,这次要实现一个点击出现操作弹框的效果:并将这个功能封装成一个函数,便于在项目的多个地方使用. 具体思路是: 封装一个组件,组件保护一个插槽,我们可以根据不同的场景,利用插槽随意在这个弹框里插入任何元素,这个弹框显示时根据我鼠标的点击位置,定位弹窗的位置,并在组件里面监听鼠标抬起事件,触发事件时将弹窗隐藏: 接着在函数中利用createElement和appendChild方法将弹出框创建并插入到页面中:   本次实现基于vuecli3 接下来,具体实现: 首先,我们先写一个demo组

随机推荐