首页 > 其他分享 >Selenium自动化之弹窗处理

Selenium自动化之弹窗处理

时间:2023-12-27 15:46:29浏览次数:34  
标签:Selenium self driver alert switch sleep 自动化 弹窗

1.前言

我们在使用Selenium做Web自动化测试时,页面经常出现弹窗,如果不处理后续的测试脚本就无法正常运行,今天我们就带大家一起来学习如何处理Web页面上的弹窗。

2.Web页面弹窗的分类

弹窗通常有3种:Alert类型弹框、Confirm类型弹框、Prompt类型弹框,这种我们无法通过定位元素来操作。它们的具体特点如下:

  • Alert弹窗:只有信息及确认按钮
  • Confirm弹窗:在Alert弹窗基础上增加了取消按钮
  • Prompt类型弹框:在Confirm的基础上增加了可输入文本内容的功能

3.解决方案

selenium中提供了如下方法来处理弹窗,具体的解决方案如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.switch_to.alert.accept() #确定、同意;三种弹窗都可使用
driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt弹窗中使用
title = driver.switch_to.alert.text #打印弹窗信息
alert = driver.switch_to.alert #获取alert对象
alert.send_keys() #Prompt弹窗中输入内容

有些弹窗并非浏览器的alert 窗口,而是html元素,这种对话框只需要按照常规的定位页面元素进行处理即可

4.实战演练

import unittest
from selenium import webdriver
from time import sleep

class TestAlert(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(5)
        self.driver.maximize_window()

    def tearDown(self):
        self.driver.quit()

    def test_alert(self):
        self.driver.get(r'http://sahitest.com/demo/alertTest.htm')
        self.driver.find_element('name','b1').click()
        alert = self.driver.switch_to.alert
        print(alert.text)
        alert.accept()
        sleep(2)
    def test_confirm(self):
        self.driver.get(r'http://sahitest.com/demo/confirmTest.htm')
        self.driver.find_element('name','b1').click()
        alert = self.driver.switch_to.alert
        print(alert.text)
        alert.accept()
        # alert.dismiss()
        sleep(2)
    def test_prompt(self):
        self.driver.get(r'http://sahitest.com/demo/promptTest.htm')
        self.driver.find_element('name','b1').click()
        alert = self.driver.switch_to.alert
        print(alert.text)
        alert.send_keys("CR77777777777777777")
        sleep(1)
        alert.accept()
        sleep(2)

if __name__ == '__main__':
    unittest.main()

最后如果你想学习软件测试和需要软件测试资料,欢迎加入笔者的交流群:731789136,里面可以免费领取软件测试+自动化测试资料+软件测试面试宝典+简历模版+实战项目+面试刷题工具和大佬答疑解惑,我们一起交流一起学习!

标签:Selenium,self,driver,alert,switch,sleep,自动化,弹窗
From: https://www.cnblogs.com/NHB6870/p/17930699.html

相关文章

  • 给你一个网站,你如何来做自动化测试的?Web网站测试流程及方法
    我想大多数开始进行web端页面测试的人,一开始会的都是在页面上点点点,然后一看到页面上有什么图片失效啊,页面遮挡就觉得是找到了大bug;一开始我也是这样,尽管我很谨慎,很仔细,把页面上的每一个角落都看了几十遍,依然没有把页面上的点点点测好,当时真的是每天都过得提心吊胆。那给你一个网......
  • 验证jenkins自动化部署
    1.测试代码2.提交代码到git,触发构建3.在GitHub服务器上去看,是否已经触发 4.在Jenkins的控制台查看是否正在构建从下图中可以看出,正在构建5.查看当次构建的控制台日志说明已经启动成功6.查看Linux服务器,是否上传成功7.在Linux上使用命令jps,查看是否启动8.浏览器......
  • Jenkins自动化部署实现原理
     1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。3.maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle。4.Jenkins可以不用安装tomcat,只要有Java环境就可以,它可以自己启......
  • 人工智能智能制造自动化软件在制造业中的发展空间
    1.背景介绍制造业是现代社会的核心产业之一,其对于经济增长、就业和国家竞争力的贡献是非常重要的。然而,制造业也面临着许多挑战,如高成本、低效率、环境污染等。为了应对这些挑战,制造业需要不断发展和创新,以提高生产效率、降低成本、提高产品质量和环境友好性。人工智能(AI)和自动化技......
  • 人工智能在制造业自动化软件中的实际案例分析
    1.背景介绍制造业自动化软件的发展是人工智能在现实生活中的一个重要应用。在制造业中,人工智能技术的应用可以提高生产效率,降低成本,提高产品质量,降低人工操作的风险,实现智能化管理等。在制造业中,人工智能技术的应用主要包括以下几个方面:生产线自动化:通过使用机器人、自动化设备和传......
  • 医学影像的图像标注技术:如何实现自动化的图像标注与分析
    1.背景介绍医学影像是一种重要的诊断工具,用于揭示患者的内部结构和功能。医学影像分析通常需要专业医学影像诊断师对图像进行手工标注和分析,这是一个耗时且容易出错的过程。因此,自动化的图像标注和分析技术在医学影像领域具有重要意义。图像标注是一种计算机视觉任务,旨在将图像中的......
  • Python+Appium自动化测试-元素定位工具
    三种定位工具:UiAutomatorViewerAndroidSDK自带工具location:AndroidSDK安装目录/tools也可以去github下载standalone版本注意:截屏时,当前模拟器不能被其他程序占用,比如在截屏时Weditor也连接了终端AppiumDesktopInspectorAppiumServer自带工具下载地址:https://github......
  • Python+Appium自动化测试环境搭建
    安装JDK并配置环境变量JAVA_HOMEPath验证命令:返回版本号说明配置成功java-version安装AndroidSdk并配置环境变量AndroidSDKTool下载地址:https://www.androiddevtools.cn详细完整版安装步骤:https://blog.csdn.net/qq877728715/article/details/133940938安......
  • # yyds干货盘点 # 盘点一个Python自动化办公实战案例(三)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python自动化办公的问题,一起来看看吧。【温馨提示】遇到表达不清的,能稍微描述下,想要达成的结果吗?在excel上,或者画图也行。最好是把你想要的结果展示在excel中,另外,你展示的这个表格最好做个小的demo发上来......
  • 盘点一个Python自动化办公实战案例(三)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python自动化办公的问题,一起来看看吧。【温馨提示】遇到表达不清的,能稍微描述下,想要达成的结果吗?在excel上,或者画图也行。最好是把你想要的结果展示在excel中,另外,你展示的这个表格最好做个小的demo......