测试必须在时间、质量和成本之间获取一个平衡点,这是测试策略和测试设计的价值体现。

2.29 练习题1:去掉页面动态窗

上一篇 / 下一篇  2018-06-12 10:57:08 / 个人分类:Python+Selenium2 WebDriver API

2.29 练习题1:去掉页面动态窗

Rd,@8E9r0我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。
8YiY"P O7t F(j{2z0一、alert弹窗 51Testing软件测试网*r qHuI xJ1u

Q1S6j Ih!V3v051Testing软件测试网3~V?:TK4[QN

9Q4SA/fwbE2c0 51Testing软件测试网kk(E(GEn@/r;c@

51Testing软件测试网 ma5~v6A

 51Testing软件测试网Up&t7m|

51Testing软件测试网lKO(C ] |

这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch_to.alert先定位到弹窗,然后使用一系列方法来操作:51Testing软件测试网K5Ed{ `~e?'`*z
accept - 点击【确认】按钮51Testing软件测试网H*l?`'H c#_y0T

t;GQar1Yd.}L0dismiss - 点击【取消】按钮(如有按钮)51Testing软件测试网)lu3]-mk L)o0H

51Testing软件测试网zEg8s.eOF$h

send_keys - 输入内容(如有输入框)51Testing软件测试网D;k},Ct*G,{a @

*M0F5vp3Y[M D0这里举一个菜鸟教程上的一个例子:51Testing软件测试网P-F$q"jB"g3R!L6|

,~l9KU|$~Q@0http://www.runoob.com/try/try.php?filename=tryjs_alert,

k?2U&i-bf1V ~]Pu051Testing软件测试网~rk9p(I wVV+E!M j9v

在页面左边点击【显示警告框】就会弹出一个alert弹窗:51Testing软件测试网O B |*qx;Mf(J

51Testing软件测试网8ni7sm/B

ms0f(o)jdn#B? w051Testing软件测试网M e2@/{7tGma*`G

我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果:51Testing软件测试网;l%e[*K'@*V_
al = driver.switch_to_alert() al.accept()
$k7^;R(E p4U |0这里这个switch_to_alert()其实是旧写法,照理应该是用switch_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。

~Z:L0uyxK V;K051Testing软件测试网_D6i/c6d R

以下是完整代码,为了运行的时候看得清楚,我加了两处等待:51Testing软件测试网 OL)ZM:D%mkG

复制代码
#encoding:utf-8 fromseleniumimportwebdriver importtime 
driver=webdriver.Firefox() 
driver.get("http://www.runoob.com/try/try.php?filename=tryjs_alert")  51Testing软件测试网$~li{4ZqDvDz2[
driver.switch_to.frame("iframeResult")51Testing软件测试网!EL m$ZP3p2I{/v%or.`
driver.find_element_by_xpath("html/body/input").click()  time.sleep(1) al =driver.switch_to_alert()  time.sleep(1) al.accept()
复制代码

!i`6K X dV#C*~1i j0二、自定义弹窗 
!`6d'Bot2f`0由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大法。这里举一个新世界教育官网首页的例子(http://sh.xsjedu.org): 51Testing软件测试网7L{ u AX g8Zs'VE

51Testing软件测试网(vf4t2Wx#K1y

51Testing软件测试网xI2F$Q)w M k9{_

51Testing软件测试网A:a@!r9DkU t&}

 

8S X @}2b0L051Testing软件测试网:\Q+f+{c_,O{

大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style. 对象,有一个display属性,可以设置元素如何被显示,51Testing软件测试网/^3n+o|t7o
详细解释可以参考http://www.w3school.com.cn/jsref/prop_style_display.asp。将display的值设置成none就可以去除这个弹窗了:51Testing软件测试网&Dy~D:]'[N+I
js = 'document.getElementById("doyoo_monitor").style.display="none";'

0Xq`V l7@tI0

1]m5[3p u:x Q$\5S!CNU0完整代码如下:51Testing软件测试网E&P Vwi3E2_ x

复制代码
#encoding:utf-8fromseleniumimportwebdriverimporttime 
driver=webdriver.Firefox() 
driver.get("http://sh.xsjedu.org/")
time.sleep(1)
js='document.getElementById("doyoo_monitor").style.display="none";'driver.execute_script(js)
复制代码
51Testing软件测试网&M]/Jcv Jg\/cy

是不是既简单又高效?51Testing软件测试网'L:ag.]v'F!]r


TAG:

 

评分:0

我来说两句

Open Toolbar