7. 多窗口切换,获取句柄

有时候点击某个链接会打开一个新的窗口,获取窗口的唯一标识用句柄表示,以凤凰网为例:https://v.ifeng.com/

  • 获取当前窗口的句柄:driver.current_window_handle
  • 获取所有句柄: driver.window_handles

  • 切换句柄:driver.switch_to.window()
    • 循环判断句柄是否与首页句柄相等
    • 如果不相等,则说明是新的页面
    • 获取到新的句柄,切换到新打开的页面
    • 打印新页面的title,查看是否切换成功
  • from selenium  import webdriver
    import time
    driver=webdriver.Firefox()
    driver.get("https://www.ifeng.com/")
    time.sleep(3)
    #获取当前窗口的句柄
    h=driver.current_window_handle
    print(h)
    print (driver.title)
    #定位视频并打开视频页面,获取所有的句柄
    s=driver.find_element_by_css_selector("#nav > li:nth-child(2) > a:nth-child(1)").click()
    time.sleep(5) #需要增加sleep时间,以确保新窗口打开,获取新的句柄
    all_h=driver.window_handles
    print(all_h)
    #循环判断句柄是否与首页句柄相等
    for i in all_h:
        if i!=h:
            #如果不等于首页句柄,则切换到新打开的页面,并打印其title
            driver.switch_to.window(i)
            print (driver.title)
    '''
        #验证title
        if u"视频门户" in driver.title:
            print("页面打开正常")
        else:
            print("页面打开失败")
    '''
    #关闭窗口
    driver.close()
    #切换到首页
    driver.switch_to.window(h)
    #打印当前窗口句柄,查看是否切回首页
    print (driver.current_window_handle)

    打印的结果

    6442450945
    凤凰网
    ['6442450945', '6442450987']
    凤凰视频首页-最具媒体价值的视频门户-凤凰网
    6442450945

posted on 2019-07-02 20:33  Arcy  阅读(227)  评论(0编辑  收藏  举报

导航