Selenium2(Webdriver)+Python处理浏览器弹窗
2017-03-01 17:46
841 查看
我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。
1.alert弹窗
这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch_to.alert先定位到弹窗,然后使用一系列方法来操作:
accept - 点击【确认】按钮
dismiss - 点击【取消】按钮(如有按钮)
send_keys - 输入内容(如有输入框)
这里举一个菜鸟教程上的一个例子:http://www.runoob.com/try/try.php?filename=tryjs_alert,在页面左边点击【显示警告框】就会弹出一个alert弹窗:
我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果:
这里这个switch_to_alert()其实是旧写法,照理应该是用switch_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。
以下是完整代码,为了运行的时候看得清楚,我加了两处等待:
2.自定义弹窗
由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大法。这里举一个新世界教育官网首页的例子:
大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style 对象,有一个display属性,可以设置元素如何被显示,详细解释可以参考http://www.w3school.com.cn/jsref/prop_style_display.asp。将display的值设置成none就可以去除这个弹窗了:
完整代码如下:
是不是既简单又高效~
1.alert弹窗
这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch_to.alert先定位到弹窗,然后使用一系列方法来操作:
accept - 点击【确认】按钮
dismiss - 点击【取消】按钮(如有按钮)
send_keys - 输入内容(如有输入框)
这里举一个菜鸟教程上的一个例子:http://www.runoob.com/try/try.php?filename=tryjs_alert,在页面左边点击【显示警告框】就会弹出一个alert弹窗:
我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果:
al = driver.switch_to_alert() al.accept()
这里这个switch_to_alert()其实是旧写法,照理应该是用switch_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。
以下是完整代码,为了运行的时候看得清楚,我加了两处等待:
# encoding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() 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) al = driver.switch_to_alert() time.sleep(1) al.accept()
2.自定义弹窗
由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大法。这里举一个新世界教育官网首页的例子:
大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style 对象,有一个display属性,可以设置元素如何被显示,详细解释可以参考http://www.w3school.com.cn/jsref/prop_style_display.asp。将display的值设置成none就可以去除这个弹窗了:
js = 'document.getElementById("doyoo_monitor").style.display="none";'
完整代码如下:
# encoding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("http://sh.xsjedu.org/") time.sleep(1) js = 'document.getElementById("doyoo_monitor").style.display="none";' driver.execute_script(js)
是不是既简单又高效~
相关文章推荐
- selenium_webdriver(python)下拉列表、下拉框和js弹窗警告处理
- python selenium webdriver处理浏览器滚动条
- Selenium2(Webdriver)+Python处理浏览器多标签方法二则
- selenium_webdriver(python)控制浏览器滚动条
- python+selenium webdriver 如何处理table
- selenium+python学习--webdriver API学习之浏览器
- Selenium WebDriver 弹窗,Frame, 元素处理
- selenium webdriver处理浏览器Cookie
- selenium_webdriver(python)获取元素属性值,浏览器窗口控制、网页前进后退,title/url打印
- Selenium2+Python自动化-处理浏览器弹窗(转载)
- Selenium2+Python Webdriver 如何安装浏览器驱动
- selenium webdriver python 警告框的处理
- Selenium python 启动firefox浏览器的异常selenium.common.exceptions.WebDriverException: Message: 'geckodriver'
- selenium-webdriver(python)-- 处理下拉框
- selenium-webdriver(python) (十三) -- cookie处理
- Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结
- python selenium-webdriver 处理JS弹出对话框(六)
- Selenium+Python浏览器下载弹窗的处理
- selenium_webdriver(python)获取元素属性值,浏览器窗口控制、网页前进后退,title/url打印
- Selenium webdriver 使用python脚本处理SWFupload 文件上传