Selenium+python3 应对多个弹出框存在(alert_is_present)判断和处理

from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import UnexpectedAlertPresentException

#存在弹窗处理方法一 :

EC.alert_is_present()(driver)检测是否存在弹窗

try:

WebDriverWait(driver, 10).until(EC.title_is(u"我的门户"))
         except UnexpectedAlertPresentException:         #alert处理
              print("alert处理")
              while EC.alert_is_present()(driver): #循环检测,可应对数量不定弹窗
                  result = EC.alert_is_present()(driver)
                  print(result.text)
                  result.accept()

print(‘登录失败,再次登录‘)
              login()
         except exceptions.TimeoutException: #20191215
              login() #登录失败,再次登录 
         else: #通过登录 
              print("通过登录")

#存在弹窗处理方法二 :
            print("alert处理")
            try:
               for i in range(2):  #可应对可能出现一个或二个弹窗
                   alert = driver.switch_to.alert
                   print(alert.text)
                   alert.accept() #去除浏览器警告
            except NoAlertPresentException:
               pass

#‘‘‘弹窗处理方法三,示例代码
            try:
                WebDriverWait(driver, 10, 0.5).until(EC.alert_is_present())
                alert = driver.switch_to.alert
                print(alert.text)
                alert.accept() #去除浏览器警告
            except exceptions.TimeoutException:
                print("no alert")

原文地址:https://www.cnblogs.com/thyuan/p/12043794.html

时间: 2024-10-07 11:38:54

Selenium+python3 应对多个弹出框存在(alert_is_present)判断和处理的相关文章

Selenium2+python自动化47-判断弹出框存在(alert_is_present)

前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(expected_conditions)讲expected_conditions这个模块 一.判断alert源码分析 class alert_is_present(object):    """ Expect an alert to be present.""&q

Selenium2+python自动化47-判断弹出框存在(alert_is_present)【转载】

前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(expected_conditions)讲expected_conditions这个模块 一.判断alert源码分析 class alert_is_present(object):    """ Expect an alert to be present.""&q

selenium自动化实施中对windows弹出框的几种常见处理方案

一.概述 在使用自动化框架selenium实施中,经常会遇到windows弹出框的出现,刚入门的web自动化测试小伙伴不要慌哦! 二.几种常见的处理windows弹出框的方案 2.1 Selenium 处理安全对话框 (windows security dialog)用autoit 来代替 2.1.1 安装autoit-v3-setup.exe 2.1.2 将AutoitX3.dll和jcob.1.18-M2-x86.dll放到C:\windows\System32路径下:如果是64位系统,需把

Python Selenium 获取不到弹出框的另外一种思路

大家都知道弹出框大致可以分为三种:1.警告消息框(alert).2.确认消息框(confirm).3.提示消息对话(prompt) 而selenium 提供switch_to_alert()方法来定位: switch_to_alert() #定位弹出对话 text()               #获取对话框文本值 accept()                   #相当于点击"确认" dismiss()                  #相当于点击"取消"

Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息.报警信息.执行操作后的返回信息,甚至用来接收输入值等. (二) Alert类 Selenium WebDriver 通过Alert 类来操控 JavaScript 警告. (三) Alert功能及方法 功能/属性 简单

python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题

Webdriver是基于浏览器操作的,当页面上传文件使用的是flash的控件SWFFileUpload调用的时候,调用的是系统底层的文件选择弹出框 这种情况,Webdriver暂时是不支持除页面外的其他操作 前期尝试过很多种方法,比如send_keys("path"),但是都无法解决 虽然Webdriver无法对底层进行操作,但是Python的扩展是可以的 通过模拟鼠标.键盘的操作,可以解决这个问题,但是这个方法比较笨,而且不怎么理想,如果有好的方法,请留言给我,谢谢! 解决方法: 1

Selenium2学习-040-JavaScript弹出框(alert、confirm、prompt)操作演示实例

弹出框是网页自动化测试常见得操作页面元素之一,常见的JavaScript弹出框有如下三种: 1.alert(message):方法用于显示带有一条指定消息和一个 OK 按钮的警告框.DemoAlert.html 示例代码如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html&g

弹出框警告框处理

一.弹出框警告框 场景: 1.alert 方法: switch_to.alert() 代码: #coding:utf-8from selenium import webdriverfrom selenium.webdriver.support.select import Selectfrom selenium.webdriver.common.action_chains import ActionChainsimport timedriver=webdriver.Chrome()driver.g

robotframework 下对于web弹出框的处理

转发自:http://www.cnblogs.com/dreamyu/p/6877145.html 在web自动化测试中会遇到各种弹出框,在selenium中有对这些弹出框的处理. 弹出框一般有这么几类: 1.普通的弹出窗口,如果是可以定位的,直接定位到窗口,然后进行相应的操作. 2.如果是浏览器系统弹出框,alter类型的,可以使用方法: dr.switchTo().alert().accept();   或者dismiss(取消),记得在处理前先判断下是否有alter窗口,如果窗口出来的较慢