python+selenium2自动化---多表单多窗口切换
Posted 小江子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+selenium2自动化---多表单多窗口切换相关的知识,希望对你有一定的参考价值。
一、多表单切换
当遇到frame/iframe表单嵌套页面时, WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单 内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。
switch_to.frame()默认传入frame的id或者name来定位,当没有这两个属性时,可通过其他定位方式先定位到frame元素,再将该定位结果传给frame
如果完成了在当前表单上的操作,则可以通过 switch_to.parent_content()方法跳出当前一级表单。该方法默认对应于离 它最近的switch_to.frame()方法。除此之外,在进入多级表单的情况下, 还可以通过switch_to.default_content()跳回最外层的页面
driver.switch_to.frame()
driver.switch_to.parent_frame()
driver.switch_to.default_content()
二、多窗口切换
WebDriver提供了 switch_to.window()方法,可以实现在不同的窗口之间切换:
示例代码如下:
from selenium import webdriver import time driver = webdriver.Chrome() driver.get(‘http://baidu.com‘) #获取搜索页面的搜索句柄 search_handle = driver.current_window_handle print(search_handle) driver.find_element_by_link_text(‘登录‘).click() time.sleep(5) driver.find_element_by_link_text(‘立即注册‘).click() #获取打开的所有窗口句柄 all_handle = driver.window_handles print(all_handle) #进入注册窗口 for handle in all_handle: if handle != search_handle: driver.switch_to.window(handle) print("现在进入的页面标题是:",driver.title) #进入搜索接口 for handle in all_handle: if handle == search_handle: driver.switch_to.window(handle) print(‘现在进入的页面标题是:‘,driver.title)
以上是关于python+selenium2自动化---多表单多窗口切换的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2+python自动化13-多窗口句柄(handle)
Selenium2+python自动化-窗口多标签处理方法总结(转载)
Selenium2+python自动化-窗口多标签处理方法总结(转载)