前言
有些页面的链接打开后,会重新打开一个窗口,想要在新页面上操作,就需要先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。
1、元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别
获取当前窗口的句柄
driver.current_window_handle
获取所有窗口的句柄
driver.window_handles
2、切换句柄
方法一:
1.循环判断是否与首页句柄相等
2.如果不等,说明是新页面的句柄
3.获取的新页面句柄后,可以切换到新打开的页面上
4.打印新页面的title,看是否切换成功
for i in all_h: if i == h: driver.switch_to.window(i) print driver.title
方法二:
1.直接获取all_h这个list数据里面第二个hand的值:all_h[1]
driver.switch_to.window(all_h[1])
3、关闭新窗口,切回主页
driver.close() driver.switch_to.window(h)
另js也可以处理多窗口
(1)、比如登录百度后,点击百度的网页链接会打开一个新的窗口 (只有登录的才会打开新的窗口,不登录是不会的)
(2)、查看元素属性:target="_blank"
(3)、去掉target="_blank"属性
1.因为此链接元素target="_blank",所以打开链接的时候会重新打开一个标签页,那么解决这个问题,去掉该属性就可以了。
2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性
3.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开
(4)、js去掉target属性
js = 'document.getElementById("id").target="";' driver.execute_script(js)
注意:并不是所有的链接都适用于本方法,本篇只适用于有这个target="_blank"属性链接情况