2.29 练习题1:去掉页面动态窗
Q-m K8hZNZ0我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自动化测试的时候势必要处理这些弹窗,这里就介绍一下目前前端界两种弹窗的处理方法。51Testing软件测试网j4sep%nH8\.A
一、alert弹窗
H(oP _\w|"g04C `8k'{ Q-C${i@O051Testing软件测试网^#m6l+U2u3h
51Testing软件测试网2Mr*A-B|N
i 51Testing软件测试网2V%H4i7ToDU
+I8XN%^0zc0
0l7Vm-K:p2Kes,A0q 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&f1VYsend_keys - 输入内容(如有输入框)51Testing软件测试网-n5xF h@`'[(h
T U$c6k7]7u)Lbw0这里举一个菜鸟教程上的一个例子:51Testing软件测试网
nqy-T}
51Testing软件测试网&J-@TH_6Jhttp://www.runoob.com/try/try.php?filename=tryjs_alert,51Testing软件测试网}2F_ad9C#L9Hd8D
51Testing软件测试网(k;JG E(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 KD'bE
F~0OID0I9oc _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(SuK C:YXcj00x:@A^1?+];q9R9P0
-XFa1}H.?U0a.j
c8q_pp9oU _&r0 51Testing软件测试网/G([n%i5l
@1u;B:nG"NC/b:u4b0大家能看到,图中的这种弹窗就是现在主流的表现形式,处理这种弹窗可以利用HTML DOM Style. 对象,有一个display属性,可以设置元素如何被显示,
(x|e+zp#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[Xqm0