首页 > 其他分享 >Selenium弹框处理

Selenium弹框处理

时间:2024-10-29 21:47:57浏览次数:3  
标签:prompt confirm 处理 self Selenium alert sleep 弹框

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类型弹窗
image
自动化代码:直接调用WebElement类中的click()方法

self.driver.find_element(By.ID,"alert").click()#点击超链接alert

(2)用例2:弹框中点击确定
结果2:弹框消失
image

自动化代码:
首先需要将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类型的弹框
image

自动化代码:同样直接调用WebElement类中的click()方法

self.driver.find_element(By.ID,"confirm").click()#点击confirm超链接

(2)用例2:点击确定
结果2:弹框消失
image
自动化代码:
用到的方法是accept()

confirm=self.driver.switch_to.alert#切换至confirm弹框
sleep(2)
print(confirm.text)#打印弹窗中文本
confirm.accept()#点击确定
sleep(2)

(3)用例3:点击取消
结果3:弹框消失
image
自动化代码:用到的方法是dismiss()

confirm.dismiss()#点击取消
sleep(2)
3、prompt测试

(1)用例1:点击超链接prompt
结果1:弹出prompt类型弹框
image

自动化代码:直接调用WebElement类中的click()方法

self.driver.find_element(By.ID,"prompt").click()

(2)用例2:输入内容并确认
用例2:文本成功输入并写入页面
image

image

自动化代码:
输入文本用到的是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()

标签:prompt,confirm,处理,self,Selenium,alert,sleep,弹框
From: https://www.cnblogs.com/jongjongjong/p/18509345

相关文章

  • 基于Python星载气溶胶数据处理与反演分析
    Python作为一种强大且易于学习的编程语言,已广泛应用于数据科学和大气科学领域,Python凭借其强大的数据处理能力,可以高效处理海量的气溶胶数据。例如,通过Pandas库,研究人员可以进行高效的数据清洗、整理和分析;NumPy库则提供了强大的数值计算功能,能够快速进行各种数学和统计运算;Car......
  • GPT-Sovits-1-数据处理
    1.1切割音频将音频切割为多个10s内的片段1.2降噪这一步用的是modelscope的pipeline如果要去除背景音,可以用傅立叶转为为频谱,去除低频部分后再转回来1.3提取音频特征这里用到了funasr库这一步目的是输出音频样本的《文本标签文件》,名字为“denoise_opt.list”,......
  • 研究生如何写图像处理论文!选题、研究方法、撰写、投稿、学术道德
    论文准备(选题方向)在图像处理领域,选题方向的选择至关重要,直接影响研究的价值和创新空间。本节将介绍几个当前备受关注的研究方向,为研究人员提供灵感和指引:医学图像分析医学图像分析是图像处理领域的一个重要分支,近年来在深度学习的推动下取得了显著进展。该方向的研究价值在......
  • 活性炭吸附处理有害气体原理
    (一)概述吸附现象是发生在两个不同相界面的现象,吸附过程就是在界面上的扩散过程。吸附可分为物理吸附和化学吸附,其不同特点列于表10-33。   在吸附现象中的固相称为吸附剂,被吸附的物质称为吸附质用吸附法可以除去的污染物质,列于表10-34。  从表10-34可知,活性炭......
  • 前端防止XSS跨站脚本攻击处理(DOMPurify)
      在项目中碰到安全部门测试,输入一段脚本'<iframesrcdoc="<script>alert('xss]</script></iframe>">','<p>TestXSS<imgsrc=Xonerror=prompt(123423423423)>123123ff</p>',然后就会出现弹窗,针对于这种情况,初始情况涉及地方不多可......
  • 处理 SVG 图像的开源包
    处理SVG图像的开源包有很多,以下是一些常用的库和工具,它们可以帮助你创建、解析、转换和渲染SVG图像:CairoSVG:用途:将SVG转换为PNG、PDF、PS等格式。特点:基于Cairo的SVG渲染引擎,支持命令行和PythonAPI。安装:pipinstallcairosvg示例:importcairosvgcairosvg......
  • 异常处理汇总-Java&Mendix&Spark&SQL&etc...
    1.MyBatis映射问题执行计算过程中出现错误,错误消息:MappedStatementscollectiondoesnotcontainvaluefor... 问题原因:configure.xml文件中未配置对应路径。2. java:Annotationprocessingisnotsupportedformodulecycles.Pleaseensurethatallmodulesfrom......
  • FPGA图像处理仿真:生成数据源的方法
    免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。读者在使用本文信息时,应自行验......
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(三)SpringBoot接口统一返回和全局异常处理
    前言最近有个想法想整理一个内容比较完整springboot项目初始化Demo。SpringBoot接口统一返回和全局异常处理,使用@ControllerAdvice+ @ExceptionHandler 的组合来实现。一、pom文件新增依赖<dependency><groupId>com.alibaba</groupId>......
  • 业务代码中先处理业务最后存储数据
    背景说明:在处理复杂业务的时候,特别是研发自测期间,经常会产生很多不必要的垃圾数据。技术原理:先将要存入数据库的数据放在缓存中,等所有业务代码执行完后,再统一保存;代码如下:@Slf4jpublicclassBaseService<MextendsBaseMapper<T>,T>extendsServiceImpl<M,T>implemen......