Selenium弹框处理
Selenium中有三种弹框,本文介绍了处理三种弹框的方法
一、Selenium三种弹框
alert:用来提示,显示一个带有指定消息和确认按钮的警告框
confirm:用于确认,显示一个带有指定消息和确定及取消按钮的对话框
prompt:用于用户输入内容,显示可进行输入的对话框
这三种弹框不是html的页面元素,而是javascript的控件,所以不能用传统的方法去操作,需要用另外的方法操作,下面介绍处理三种弹框的方法已经弹框的属性:
(1)accept():用于确认,适用三种弹框
(2)dismiss():用于取消,适用三种弹框
(3)send_keys():仅适用于prompt方法,用于输入文本
(4)text:用于获取提示的文本值
二、定义form表单
定义三个超链接,点击分别弹出不同弹框
<a href="javascript:alert('提示框')" id="alert">Alert</a><br>
<a href="javascript:confirm('确认删除吗')" id="confirm">Confirm</a><br>
prompt返回内容存在变量age中,取到返回值后将变量写入页面
<a href="javascript:var age=prompt('请输入年龄');document.write(age)" id="prompt">Prompt</a><br>
界面如下
三、表单测试
1、alert测试
(1)用例1:点击超链接alert
结果1:弹出alert类型弹窗

自动化代码:直接调用WebElement类中的click()方法
self.driver.find_element(By.ID,"alert").click()#点击超链接alert
(2)用例2:弹框中点击确定
结果2:弹框消失

自动化代码:
首先需要将Webdriver的作用域从主窗口切到弹框上,操作三种弹框:alert、confirm、prompt前,都需要执行该操作,用到的方法是self.driver.switch_to.alert,第二步就可以在弹框中操作,点击确定,用到的方法是accept()
alert=self.driver.switch_to.alert#由主窗口切换到alert,返回一个alert对象
sleep(2)
#print(alert.text)
alert.accept()#点击确定
sleep(2)
2、confirm测试
(1)用例1:点击超链接confirm
结果2:弹出confirm类型的弹框

自动化代码:同样直接调用WebElement类中的click()方法
self.driver.find_element(By.ID,"confirm").click()#点击confirm超链接
(2)用例2:点击确定
结果2:弹框消失

自动化代码:
用到的方法是accept()
confirm=self.driver.switch_to.alert#切换至confirm弹框
sleep(2)
print(confirm.text)#打印弹窗中文本
confirm.accept()#点击确定
sleep(2)
(3)用例3:点击取消
结果3:弹框消失

自动化代码:用到的方法是dismiss()
confirm.dismiss()#点击取消
sleep(2)
3、prompt测试
(1)用例1:点击超链接prompt
结果1:弹出prompt类型弹框

自动化代码:直接调用WebElement类中的click()方法
self.driver.find_element(By.ID,"prompt").click()
(2)用例2:输入内容并确认
用例2:文本成功输入并写入页面


自动化代码:
输入文本用到的是send_keys()方法,点击确定用到的是accept()
prompt=self.driver.switch_to.alert#切换到prompt弹框
sleep(2)
prompt.send_keys('12')
sleep(2)
prompt.accept()
sleep(2)
三、总代码
点击查看代码
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.common.by import By
class TestCase(object):
def __init__(self):
self.driver=webdriver.Edge()
path=os.path.dirname(os.path.abspath(__file__))
file_path="file:///"+path+"/form3.html"
self.driver.get(file_path)
def test_alert(self):
self.driver.find_element(By.ID,"alert").click()#点击alert超链接
alert=self.driver.switch_to.alert#切换到弹窗,返回一个对象
sleep(2)
print(alert.text)#可以打印text内容确定
alert.dismiss()#点击确定
sleep(2)
def test_confirm(self):
self.driver.find_element(By.ID,"confirm").click()#点击confirm超链接
confirm=self.driver.switch_to.alert#切换至confirm弹框
sleep(2)
print(confirm.text)#打印弹窗中文本
confirm.accept()#点击确定
sleep(2)
confirm.dismiss()#点击取消
sleep(2)
def test_prompt(self):
self.driver.find_element(By.ID,"prompt").click()
prompt=self.driver.switch_to.alert#切换到prompt弹框
sleep(2)
prompt.send_keys('12')
sleep(2)
prompt.dismiss()
sleep(2)
if __name__=="__main__":
case=TestCase()
#case.test_alert()
#case.test_confirm()
case.test_prompt()
Selenium弹框处理的更多相关文章
- selenium弹框元素定位-冻结界面
有些网站上面的元素,我们鼠标放在上面,会动态弹出一些内容. 比如,百度首页的右上角,有个更多产品选项,如下图所示: 如果我们把鼠标放在上边,就会弹出下面的百度营销.音乐.图片等图标. 如果我们要用se ...
- selenium对Alert弹框的多种处理
Alert弹框是一个很烦人的控件,因为当前页面如果弹出了该弹框,你必须要处理它,不然你就不能操作页面的其它元素,下面我列出了alert弹框在多种场景下的处理办法. 明确知道系统哪个地方会弹alert ...
- selenium中遇到div弹框,一起引申到其他弹框
1.div弹框和DOM普通元素一样处理 2.出现一下就自动消失的弹框,也是在DOM中有描述的,可以使用xpath,用其内容定位 3.(转,其他弹框处理,包括alert和不同windows) https ...
- selenium使用chrome抓取自动消失弹框的方法
selenium使用chrome抓取自动消失弹框的方法 转:https://blog.csdn.net/kennin19840715/article/details/76512394
- python selenium处理iframe和弹框(一)
处理iframe和弹框 # encoding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() ...
- selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等
selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...
- python上selenium的弹框操作
selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示:selenium ...
- 多测师讲解selenium _enter弹框_高级讲师肖sir
enter # from selenium import webdriver# from time import sleep# drvier=webdriver.Chrome()# url='file ...
- selenium处理div生成弹框
目前遇到的弹框有两种,一种是alert,一种是div,如果遇到div模拟的弹框,在用alert就不行了. 1. public static Alert getAlert(WebDriver dr) { ...
- Selenium处理文件上传、弹框
一.文件上传 上传标签是input时,可以直接使用send_keys(文件path)的方法来进行上传 二.弹框处理 页面操作中,有时会遇到JavaScript生成的alert.confirm以及pro ...
随机推荐
- .NET 8 + Blazor 多租户、模块化、DDD框架、开箱即用
前言 基于 .NET 8 的开源项目,主要使用 WebAPI + Blazor 支持多租户和模块化设计,DDD构建.可以帮助我们轻松地搭建起一个功能完善的Web应用程序.除了帮助你快速构建应用程序之外 ...
- Python-目标检测-将xml文件转换成.txt文件
代码说明:labels文件夹是工程下的一个文件夹,里面存放的是一些xml文件. 然后我们将这些xml文件中的内容取出来,放在路径path1的文件名下.这样也就完成了xml文件到txt文件的转化. 该代 ...
- Java设计模式之单例模式 通俗易懂 超详细 【内含案例】
单例模式 推荐 Java 常见面试题 什么是单例模式 ? 确保程序中一个类只能被实例化一次,实现这种功能就叫单例模式 单例模式的好处是什么 ? 方便控制对象 节省资源减少浪费 怎么实现单例模式 ? 构 ...
- 2023 ICPC 香港
gym 开场发现 E 是传统数据结构题很高兴,不过先跳了.F 知道相邻两段的长度差 \(\le1\),以为最终每段长度只有 \(\lfloor\frac{n}{m+1}\rfloor,\lceil\f ...
- C#应用 - 破解注入外挂必备神器Harmony
目录 前言 1,快速开始 1.1 SomeGameClass类 1.2 Patch01类 1.3 MyPatcher类 1.4 跑起来 2,破解 2.1 类库项目 2.2 winform项目 3,注入 ...
- 推荐一款开源、高效、灵活的Redis桌面管理工具:Tiny RDM!支持调试与分析功能!
1.引言 在大数据和云计算快速发展的今天,Redis作为一款高性能的内存键值存储系统,在数据缓存.实时计算.消息队列等领域发挥着重要作用.然而,随着Redis集群规模的扩大和复杂度的增加,如何高效地管 ...
- 探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议
随着科学技术的发展,促进人工智能产业与高校人才培养相融合,正成为业界关注的焦点.7月3日,上海合合信息科技股份有限公司(以下简称:合合信息)与同济大学软件学院"产教融合人才培养签约暨创新实践 ...
- Facebook – Reviews (Graph API)
前言 企业网站经常需要放 customer reviews 来增加 conversion. 常见的 Reviews 平台有 Facebook Reviews 和 Google Reviews. 这篇, ...
- JavaScript – Async Iterator & Generator
前言 要看懂这篇请先看下面几篇 JavaScript – Iterator JavaScript – Generator Function JavaScript – Promise JavaScrip ...
- Java 8 新特性:Stream 流快速入门
前言 在 java 中,涉及到对数组.集合等集合类元素的操作时,通常我们使用的是循环的方式进行逐个遍历处理,或者使用 stream 流的方式进行处理. 什么是 Stream? Stream(流)是一个 ...