zoukankan      html  css  js  c++  java
  • 【selenium学习 -8】handle的切换

    在我们进行测试的过程中,经常会遇到点开超链接打开另一个新窗口的情况,即 target="_blank",这种情况下,如果要在新窗口进行操作,需要将焦点移到新窗口上,本文将介绍这种情况的处理

    切换窗口的方法:

    1.获取当前页面窗口的句柄
    current_window_handle
    
    2.获取所有页面窗口的句柄
    window_handles
    
    3.切换句柄
    switch_to_window(window_name)

    实验过程:

    打开百度页面 - 点击左上角的“新闻” - 切换到百度新闻的窗口 - 获取新页面的title

     实验代码:

    from selenium import webdriver
    import time
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.maximize_window()
        driver.get("https://www.baidu.com/")
        driver.find_element_by_link_text("新闻").click()
        # 获取当前窗口句柄
        current_handle = driver.current_window_handle
        # 获取所有句柄
        handles = driver.window_handles
        # 遍历句柄,并切换到句柄
        for handle in handles:
            if handle != current_handle:
                driver.switch_to.window(handle)
        time.sleep(3)
        print(driver.title)

    还有一种方式,可以根据目标页面的title或者url进行切换,以下以title为例

    from selenium import webdriver
    import time
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.maximize_window()
        driver.get("https://www.baidu.com/")
        driver.find_element_by_link_text("新闻").click()
        # 获取当前窗口句柄
        current_handle = driver.current_window_handle
        # 获取所有句柄
        handles = driver.window_handles
        # 先切换到每一个handle上,获取页面的title,如果title和目标一致,则停下来
        for handle in handles:
            driver.switch_to.window(handle)
            title = driver.title
            if "百度新闻——海量中文资讯平台" == title:
                break
    
    
        print(driver.title)

    总结:核心内容还是确定好要去的具体页面,然后切换过去。第一种方式感觉适合只新开一个窗口的情况,比较简单。如果有多个窗口,可以采用第二种方式。

  • 相关阅读:
    java获取程序执行时间
    自己不去努力 还有谁能帮你
    错误: 找不到或无法加载主类 的解决办法
    不要迷信红黑树 哈希是一切
    nancy的诊断2
    nancy中的诊断功能面板1
    ironpython 2.75 在c#中的使用
    sqlserver2008创建数据库 报 Cannot read property is filestream 此属性不可用于sql server 7.0 解决
    结巴net 分词 配置文件路径,在网站中的出现问题的解决
    akka 练手 原来第一次是原封不动的返回传出去的参数
  • 原文地址:https://www.cnblogs.com/ronyjay/p/12916111.html
Copyright © 2011-2022 走看看