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

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

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

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

Q-m K8hZ NZ0我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。51Testing软件测试网j4sep%nH8\.A
一、alert弹窗 

H(oP _\w|"g0

4C `8k'{Q-C${i @O051Testing软件测试网^#m6l+U2u3h

51Testing软件测试网2Mr*A-B|N i

 51Testing软件测试网2V%H4i7ToDU

+I8X N%^0zc0 

0l7Vm-K:p2Kes,A0

q ms$Z"p4H]"Y0这种弹窗是最简单的一种,Selenium里有自带的方法来处理它,用switch_to.alert先定位到弹窗,然后使用一系列方法来操作:51Testing软件测试网G#U)G;y#\%C
accept - 点击【确认】按钮51Testing软件测试网9f0|1e#q0a*r

.wlqqb0dismiss - 点击【取消】按钮(如有按钮)51Testing软件测试网/f:UFl(e2g

51Testing软件测试网%O9J_kj&f1VY

send_keys - 输入内容(如有输入框)51Testing软件测试网-n5xFh@`'[(h

T U$c6k7]7u)Lbw0这里举一个菜鸟教程上的一个例子:51Testing软件测试网 nqy-T}

51Testing软件测试网&J-@TH_6J

http://www.runoob.com/try/try.php?filename=tryjs_alert,51Testing软件测试网}2F _ad9C#L9Hd8D

51Testing软件测试网(k;JGE(LNQ0H

在页面左边点击【显示警告框】就会弹出一个alert弹窗:51Testing软件测试网~7hY8? A] m*N$j

q5~]"N.T-N051Testing软件测试网*D1a+^ Dh/z

51Testing软件测试网6J-Guc6O`'Qv

我们用以下代码就能实现切换至弹窗并点击【确定】按钮的效果:51Testing软件测试网 fi{QUj
al = driver.switch_to_alert() al.accept()51Testing软件测试网.Tz;S$?CV4X$m/w\
这里这个switch_to_alert()其实是旧写法,照理应该是用switch_to.alert(),但是新写法却会报错,目前猜测是版本问题,可能不支持新写法,这里就先用旧写法。

sR@ S K D'bE F~0

OID0I9oc _t)kD0以下是完整代码,为了运行的时候看得清楚,我加了两处等待:51Testing软件测试网[&t![`@\2u6e

复制代码
#encoding:utf-8 fromseleniumimportwebdriver importtime 
driver=webdriver.Firefox() 
driver.get("http://www.runoob.com/try/try.php?filename=tryjs_alert")  51Testing软件测试网(BEG`zg(}x
p
driver.switch_to.frame("iframeResult")51Testing软件测试网.DC`$R'^ q_
driver.find_element_by_xpath("html/body/input").click()  time.sleep(1) al =driver.switch_to_alert()  time.sleep(1) al.accept()
复制代码
51Testing软件测试网2S$]%u:F U3a P

二、自定义弹窗 
?)T1]%] d cC7~m?n0由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大法。这里举一个新世界教育官网首页的例子(http://sh.xsjedu.org): 

|5su(S uK C:YXcj0

0x:@A^1?+];q9R9P0

-XFa1}H.?U0

a.j c8q _pp9oU_&r0 51Testing软件测试网/G([n%i5l

@1u;B:nG"NC/b:u4b0大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style. 对象,有一个display属性,可以设置元素如何被显示,
(x|e+z p#c0vBfS0详细解释可以参考http://www.w3school.com.cn/jsref/prop_style_display.asp。将display的值设置成none就可以去除这个弹窗了:
4b[#w/W[s2fY:ON0js = 'document.getElementById("doyoo_monitor").style.display="none";'51Testing软件测试网b3k#iv+s ^]$c6S6s\L

K4w$HA`kt;sJ;S0完整代码如下:51Testing软件测试网 r9BYc-O

复制代码
#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)
复制代码

j"p(NBA0是不是既简单又高效?

W y$h#lP[Xq m0

TAG:

 

评分:0

我来说两句

Open Toolbar