• selenium3+python-多窗口、句柄(handle)


    一、获取当前窗口句柄

        1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别。

        2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。

        3.获取当前页面的句柄:driver.current_window_handle

    二、获取所有句柄

        1.定位拉钩网招聘产品经理,并点击

        2.点击后,获取当前所以的句柄:window_handles

    三、切换句柄

    方法一:

        1.循环判断是否与首页句柄相等

        2.如果不等,说明是新页面的句柄

        3.获取的新页面句柄后,可以切换到新打开的页面上

        4.打印新页面的title,看是否切换成功

    方法二:

        1.直接获取all_hand这个list数据里面第二个hand的值:all_hand[1]

    四、关闭新窗口,切回主页

        1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证

        2.验证完后切关闭新窗口

        3.切回句柄到首页

        4.打印当前页面的句柄,看是否切换到首页了

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("https://www.lagou.com/")
    #关闭切换城市
    driver.find_element_by_id("cboxClose").click()
    driver.implicitly_wait(10)
    #获取当前窗口的句柄
    hand = driver.current_window_handle
    print(hand)
    #点击产品经理打开新的标签
    driver.find_element_by_link_text("产品经理").click()
    #获取所有句柄
    all_hand = driver.window_handles
    print(all_hand)

    #切换句柄
    #判断当前的句柄不等于首页就切换
    for item in all_hand:
    if item != hand:
    driver.switch_to_window(item)
    print(driver.title)

    #方法二,直接在list中切换
    driver.switch_to_window(all_hand[1])
    print(driver.title)

    #关闭新窗口
    driver.close()

    #切换首页
    driver.switch_to_window(hand)
    #打印当前的title
    print(driver.title)

  • 相关阅读:
    面经补充
    一些杂项
    leetcode整理
    缓存问题及相关解决策略
    4.10 面经补充
    合并区间(二维数组与列表的转换)
    1.4任务
    jvm虚拟机笔记<八> 线程安全与锁优化
    jvm虚拟机笔记<七> 内存模型与线程
    jvm虚拟机笔记<六> 运行期优化
  • 原文地址:https://www.cnblogs.com/Teachertao/p/10970296.html
Copyright © 2020-2023  润新知