企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化[测试](http://lib.csdn.net/base/softwaretest "软件测试知识库")的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。 <br /> ## **一、alert弹窗** ![](https://img.kancloud.cn/06/a5/06a581bc879c3fea0dba622d522a2680_318x202.png) 这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch\_to.alert先定位到弹窗,然后使用一系列方法来操作: * accept - 点击【确认】按钮 * dismiss - 点击【取消】按钮(如有按钮) * send\_keys - 输入内容(如有输入框) 这里举一个菜鸟教程上的一个例子:[http://www.runoob.com/try/try.php?filename=tryjs\_alert](http://www.runoob.com/try/try.php?filename=tryjs_alert),在页面左边点击【显示警告框】就会弹出一个alert弹窗: ![](https://img.kancloud.cn/0f/82/0f820795303713e6703aac19279e408f_649x359.png) 我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果: ~~~ al = driver.switch_to_alert() al.accept() ~~~ 这里这个switch_to_alert()其实是旧写法,照理应该是用switch\_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。 以下是完整代码,为了运行的时候看得清楚,我加了两处等待: ``` # coding:utf-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://www.runoob.com/try/try.php?filename=tryjs_alert") driver.switch_to.frame("iframeResult") driver.find_element_by_xpath("html/body/input").click() time.sleep(1) a1 = driver.switch_to_alert() time.sleep(1) a1.accept() ```