赞
踩
1.多标签/多窗口之间的切换
场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况。
1)获取所有窗口的句柄
handles = driver.window_handlers
调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。
2)通过窗口的句柄进入的窗口
driver.switch_to.window(handles[n]) 通过窗口句柄激活进入某一窗口
还可以使用循环和判断进行窗体切换
代码如下:
- # coding:utf-8
- from selenium import webdriver
-
- driver = webdriver.Chrome()
- driver.get("https://www.taobao.com/")
- # 淘宝首页handle
- handle = driver.current_window_handle
- driver.find_element_by_link_text("女装").click()
- # 获取所有handle
- handles = driver.window_handles
- # 切换到淘宝首页
- driver.switch_to.window(handles[0])
-
- # for i in handles:
- # if i != handle:
- # # 切换到淘宝首页
- # driver.switch_to.window(handle)
- driver.quit()
2.多表单/多框架切换
在网页中,表单嵌套是很常见的情况,尤其是在登录的场景
1)什么是多表单?
实际上就是使用iframe/frame,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面
2)处理方法
直接使用id值切换进表单
driver.switch_to.frame(value)
定位到表单元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el)
4)多表单切换
处理方法
driver.switch_to.default_content() 跳回最外层的页面。
driver.switch_to.parent_frame() 跳回上层的页面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。