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

Posted arcy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

    技术图片

以上是关于7. 多窗口切换,获取句柄的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium五:多窗口切换与获取句柄

Selenium中怎么实现多个窗口之间的切换?

selenium 多窗口切换

Selenium 多窗口,网页frame 处理,多浏览器

如何解决Selenium句柄多窗口问题

4多窗口切换,句柄(handle)