码迷,mamicode.com
首页 > 编程语言 > 详细

python+selenium2自动化---多表单、多窗口切换

时间:2020-06-23 15:48:57      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:python   for   parent   search   登录   窗口切换   句柄   current   方法   

一、多表单切换

当遇到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自动化---多表单、多窗口切换

标签:python   for   parent   search   登录   窗口切换   句柄   current   方法   

原文地址:https://www.cnblogs.com/Xiaojiangzi/p/13182008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!