zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    从csdn转移到博客园的一篇测试文章
    接口与抽象类的区别
    python网络爬虫进阶之HTTP原理,爬虫的基本原理,Cookies和代理介绍
    python验证码识别(2)极验滑动验证码识别
    VMWare虚拟机应用介绍
    Rpg maker mv角色扮演游戏制作大师简介
    python数据挖掘之数据探索第一篇
    python数据分析&挖掘,机器学习环境配置
    python爬取豆瓣视频信息代码
    python验证码处理(1)
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13182008.html
Copyright © 2011-2022 走看看