- 切换窗口
# 获取多个windows句柄 windows = driver.windows_handles # 切换到最新的窗口 driver.switch_to.window(windows[-1])
- 切换弹窗
driver.switch_to.alert() driver.accept() driver.dismiss() driver.send_keys()
- 切换自定义窗口
无甚特殊,自定义窗口一般使用正常的元素定位就可以搞定 - 切换frame
""" iframe标签可以创建包含另一个文档的的内联框架(即行内框架),iframe框架中可以内含一个独立的html文件 优点:程序调入静态页面会方便一些,而且将页面和程序分离了 缺点:样式需要额外连入,则增加了一些请求;iframe虽然可以把原来的页面完全显示出来,但是因为是内嵌 的,所以对搜索引擎很不友好,网站很难有好的排名;iframe的框架结构有时候会很让人迷茫,多个 框架中都出现滚动条时,往往会让人感到厌烦;在运用框架结构时,如果导航链接出现错误,导致链接 的对象出现在导航框架中,会使访问者困在其中,而没有其余的目标可以访问;而且在调用外部页时, 会需要额外调用css,产生额外的请求次数。 """ """ 建议少用iframe? iframe的创建比其它如scripts和css的DOM元素的创建慢了1-2个数量级。 onload事件以及连接池(connection pool)的问题: 1) iframe阻塞页面加载:浏览器及时触发onload事件很重要,比如onload事件触发使浏览器"忙"指示器停 止,表现为页面加载完毕,该事件延迟后,会导致用户体验到'慢'的感觉,而window的onload事件在所有 iframe加载后(包含内部的元素)才会触发。在Safari和Chrome里,通过JavaScript动态设置的iframe的 src可以避免这种阻塞情况 2) 唯一的连接池:浏览器一般只能针对某一web服务器打开少量的连接,老版本的浏览器可能对同一个主机名 只同时打开两个连接。那么就会出现,iframe中的内容占用了连接,甚至用光了连接,从而阻塞了主页资源的 加载,加上一般情况下,iframe中的内容都没有主页中的内容重要,这时就显得喧宾夺主了。常见的解决办法 比如在主页面其他元素或者重要元素加载完成后,再动态设置iframe的src。 总而言之,iframe可以用简单的方式加载想要的页面,但iframe会对页面的性能带来很大的影响,使用时要慎重 """ """ iframe与frame的区别: 1.frame不能脱离frameset单独使用,iframe可以; 2.frame不能放在body中; 3.嵌套在frameset中的iframe必须放在body中 4.不嵌套在frameset中的iframe可以随意使用 5.frame的高度只能通过frameset控制;iframe可以自己控制,不能通过frameset控制 """ # 根据iframe的name dr.switch_to.frame('frame_name') # 根据iframe的下标 dr.switch_to.frame(1) # 根据iframe中的元素 dr.switch_to.frame(driver.find_elements_by_tag_name('iframe')[0]) # 切换出当前的iframe dr.switch_to.parent_frame() # 返回最外层的iframe dr.switch_to.default_content()
Selenium窗口切换
最新推荐文章于 2024-10-01 07:53:24 发布