有的网站会弹出类似如下图的警告弹窗,你会发现这种弹窗在html源码中怎么也定位不到,接下来将介绍这种弹窗的处理方式。

其实这种弹窗是不属于html的元素的,他是属于浏览器自带的弹窗,所以用定位元素的方法是定位不了的。

浏览器的警告弹窗一共有三种:

  第一种:(有【确定】【取消】按钮的)

  解决方案:

  1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

  2.text方法可以获取到弹窗上的文本

  3.accept()方法相当于点击确定按钮

  4.dismiss()方法相当于点击取消按钮

  代码:

  time.sleep(2)  a = driver.switch_to.alert     #  新方法,切换alert  # a = driver.switch_to_alert()   #  老方法,切换alert  print(a.text)                    # 获取弹窗上的文本  a.accept()                       # 确认,相当于点击[确定]按钮  # a.dismiss()                      # 取消,相当于点击[取消]按钮

  结果:

    输出弹窗上的文本内容

  

第二种:(只有【确定】按钮的)

解决方案(其实这种和第一种弹窗的处理方法一样的):

  1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

  2.text方法可以获取到弹窗上的文本

  3.accept()方法相当于点击确定按钮

  4.dismiss()方法相当于关闭弹窗

  代码:

  time.sleep(2)  a = driver.switch_to.alert     #  新方法,切换alert  # a = driver.switch_to_alert()   #  老方法,切换alert  print(a.text)                    # 获取弹窗上的文本  a.accept()                       # 确认,相当于点击[确定]按钮  # a.dismiss()                      # 取消,相当于点击关闭弹窗

第三种:(有输入对话框的)

  解决方案(其实这种弹窗处理只是多加了一个方法):

  1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

  2.accept()方法相当于点击确定按钮

  3.dismiss()方法相当于关闭弹窗

  4.send_keys()相当于在弹窗的输入框中输入文本

  代码:

  time.sleep(2)  a = driver.switch_to.alert     #  新方法,切换alert  # a = driver.switch_to_alert()   #  老方法,切换alert  a.send_keys('Kevin-liutianping') # 在弹窗上的输入框中输入文本内容  a.accept()                       # 确认,相当于点击[确定]按钮  # a.dismiss()                      # 取消,相当于点击[取消]按钮

selenium自动化之处理浏览器警告弹窗的更多相关文章

  1. Selenium自动化测试之启动浏览器

    Selenium自动化测试之启动浏览器 一.Eclipse新建java工程 1.新建java工程:File->New->Java Project,输入Project name:如AutoT ...

  2. Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)

    前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域 ...

  3. Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。

    Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息.   本文链接:https://blog.csdn.net/qq_38161040/art ...

  4. Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退

    Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退   1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...

  5. Python+Selenium自动化-安装模块和浏览器驱动操作方法

    Python+Selenium自动化-安装模块和浏览器驱动操作方法 1.安装模块文件 pip install selenium 2.安装浏览器驱动 我们主要用的浏览器驱动有chrome浏览器.fire ...

  6. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  7. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  8. 爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器

    一.图片懒加载 懒加载 :    JS 代码  是页面自然滚动    window.scrollTo(0,document.body.scrollHeight)   (重点) bro.execute_ ...

  9. 浏览器控制之 selenium,phantomJs谷无头浏览器

    目录 浏览器控制之 selenium,phantomJs谷无头浏览器 selenium phantomJs 需求是尽可能多的爬取豆瓣网中的电影信息 谷歌无头浏览器 浏览器控制之 selenium,ph ...

随机推荐

  1. 多条件查询接收很多参数的时候要用Map接收。

    好处是,以后修改查询条件的时候不用从接口,到实现类,到controller的参数都要修改, 假如加一个查询条件,只需要前端多传一个参数值,都用map<>键值对接收,只需要在 service ...

  2. 在 Linux 下搭建 Git 服务器(yum安装)

    服务端(linux): 1. 安装git [root@localhost ~]# yum -y install git 2. 增加一个git账户 为了管理的方便,在linux下面增添一个 " ...

  3. python -- MySQLdb连接mysql数据库

    1. python安装mysql $ pip install mysql-python 2. 数据库连接程序: import MySQLdb # 打开数据库连接db = MySQLdb.connect ...

  4. NopCommerce学习(1) Caching

    redis教程 http://www.runoob.com/redis/redis-tutorial.html 下载地址:https://github.com/MSOpenTech/redis/rel ...

  5. iOS TabBarItem设置红点(未读消息)

    实现原理: 其实是自定义一个view,将view添加到UITabBar上面,也可以是一个按钮,设置背景图片,和label.废话少说直接上代码搞一个UITabBar的分类 #import <UIK ...

  6. org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

    org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping 原因:yml文件格式错误,此文件要求严格要求格式 如节 ...

  7. mysql千万级数据量根据索引优化查询速度

    (一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...

  8. linux重要目录

    1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth* 2.客户端dns配置文件 /etc/resolv.conf 网卡配置文件中的dns配置优先于此文件 ...

  9. table的td、th的一些样式问题(宽度,边框,滚动条)

    1. 给table加边框 table{ border-collapse: collapse; /*表格的边框合并为一个单一的边框*/ } table, table tr th, table tr td ...

  10. day11迭代器 and 闭包

    函数名的使⽤以及第一类对象 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量. 函数名就是变量名, 函数名存储的是函数的内存地址 函数名可以赋值给其他变量 函数名可以当做容器类 ...