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弹框处理的更多相关文章

  1. selenium弹框元素定位-冻结界面

    有些网站上面的元素,我们鼠标放在上面,会动态弹出一些内容. 比如,百度首页的右上角,有个更多产品选项,如下图所示: 如果我们把鼠标放在上边,就会弹出下面的百度营销.音乐.图片等图标. 如果我们要用se ...

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

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

  3. selenium中遇到div弹框,一起引申到其他弹框

    1.div弹框和DOM普通元素一样处理 2.出现一下就自动消失的弹框,也是在DOM中有描述的,可以使用xpath,用其内容定位 3.(转,其他弹框处理,包括alert和不同windows) https ...

  4. selenium使用chrome抓取自动消失弹框的方法

    selenium使用chrome抓取自动消失弹框的方法 转:https://blog.csdn.net/kennin19840715/article/details/76512394

  5. python selenium处理iframe和弹框(一)

    处理iframe和弹框 # encoding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() ...

  6. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  7. python上selenium的弹框操作

    selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示:selenium ...

  8. 多测师讲解selenium _enter弹框_高级讲师肖sir

    enter # from selenium import webdriver# from time import sleep# drvier=webdriver.Chrome()# url='file ...

  9. selenium处理div生成弹框

    目前遇到的弹框有两种,一种是alert,一种是div,如果遇到div模拟的弹框,在用alert就不行了. 1. public static Alert getAlert(WebDriver dr) { ...

  10. Selenium处理文件上传、弹框

    一.文件上传 上传标签是input时,可以直接使用send_keys(文件path)的方法来进行上传 二.弹框处理 页面操作中,有时会遇到JavaScript生成的alert.confirm以及pro ...

随机推荐

  1. 微信支付退款和退款结果查询接口简单实现(.Net 7.0)

    〇.前言 相较于支付宝,微信支付对 .Net 的支持就没那么充分,官方没有提供 SDK. 但值得庆幸的是,在社区有大佬封装了 v3 版 .Net SDK. 原文链接:https://developer ...

  2. vite创建的react项目如何兼容低版本安卓,低版本安卓不支持es6语法

    Vite 是一个现代化的前端构建工具,默认情况下,它会生成基于 ES6+ 的代码.这对于大多数现代浏览器来说是没有问题的,但对于一些较旧版本的安卓浏览器可能会遇到兼容性问题. 为了使 Vite 创建的 ...

  3. ElementUI.Dialog.props怎么设置全局变量

    在main.js中为啥?这个可以 ElementUI.Dialog.props.closeOnClickModal.default = false // 全局关闭点遮罩关闭弹框 为啥这个不可以? El ...

  4. SMU Summer 2023 Contest Round 12

    SMU Summer 2023 Contest Round 12 A. K-divisible Sum 分类讨论: \(n > k\)时: \(n\)能整除\(k\)就全是\(1\) 不能整除, ...

  5. 寻访中国100家.NET中大企业 —— 第二站:苏州行

    一:事情起因 在.NET圈里混了十多年,相信有不少人知道我专注于玩 .NET高级调试,如今技术上的硬实力还是能够解决市面上的一些疑难杂症,但软实力却在另一个极端,如(人际交往,人情事故),所以就萌生了 ...

  6. Win32_GDI_五星红旗绘制

    五星红旗画法 设置矩形长与高的比为3:2 把矩形分为四个相等的长方形 把左上角宽分为15份,高分为10份 定位大五角星圆心位置,x为宽的5份,y为高的5份 计算五角星五个点的坐标 void SetFi ...

  7. MacPorts 使用

    安装 安装苹果命令行开发工具: xcode-select --install 下载并打开 MacPorts 安装包. 使用 MacPorts 中的软件包称为 port. sudo port selfu ...

  8. 工作 6 年,@Transactional 注解用的一塌糊涂

    接手新项目一言难尽,别的不说单单就一个 @Transactional 注解用的一塌糊涂,五花八门的用法,很大部分还失效无法回滚. 有意识的在涉及事务相关方法上加@Transactional注解,是个好 ...

  9. Redis实战11-实现优惠券秒杀下单

    本篇,咱们来实现优惠券秒杀下单功能.通过本篇学习,我们将会有如下收获: 1:优惠券领券业务逻辑: 2:分析在高并发情况下,出现超卖问题产生的原因: 3:解决超卖问题两种方案:版本号法及CAS法 4:乐 ...

  10. C语言linux系统fork函数

    References: c语言fork函数 linux中fork()函数详解 一.fork函数简介 作用 在linux下,C语言创建进程用fork函数.fork就是从父进程拷贝一个新的进程出来,子进程 ...