
正文
python selenium句柄操作
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
一、获取当前窗口句柄
1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别。
2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。
3.获取当前页面的句柄:driver.current_window_handle

二、获取所有句柄
1.定位赶集网招聘求职按钮,并点击
2.点击后,获取当前所以的句柄:window_handles

三、切换句柄
网上大部分教程都是些的第一种方法,估计是互相抄吧,小编这里新增一个更简单的方法,直接从获取所有的句柄list里面取值。
方法一:
1.循环判断是否与首页句柄相等
2.如果不等,说明是新页面的句柄
3.获取的新页面句柄后,可以切换到新打开的页面上
4.打印新页面的title,看是否切换成功
方法二:
1.直接获取all_h这个list数据里面第二个hand的值:all_h[1]

四、关闭新窗口,切回主页
1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证
2.验证完后切关闭新窗口
3.切回句柄到首页
4.打印当前页面的句柄,看是否切换到首页了

五、参考代码
# coding:utf-8from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://bj.ganji.com/")h = driver.current_window_handleprint h # 打印首页句柄driver.find_element_by_link_text("北京招聘").click()all_h = driver.window_handlesprint all_h # 打印所有的句柄# 方法一:判断句柄,不等于首页就切换# for i in all_h: # 这里不建议用for循环了,很多小伙伴懵的# if i != h:# driver.switch_to.window(i)# print driver.title# 方法二:获取list里面第二个直接切换driver.switch_to.window(all_h[1])print driver.title# 关闭新窗口driver.close()# 切换到首页句柄driver.switch_to.window(h)# 打印当前的titleprint driver.title





