zoukankan      html  css  js  c++  java
  • Selenium:多窗口切换(获取窗口句柄handle)

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口

    比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面

    那我们怎么在这两个窗口之间进行切换呢?每个浏览器窗口都有一个唯一的属性句柄(handle)来表示,我们就可以通过句柄来切换

    获取当前窗口句柄:

    # coding = utf-8
    from selenium import webdriver
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    # 打开百度首页
    driver.get(r'https://www.baidu.com/')
    # 获取当前窗口句柄
    main_windows = driver.current_window_handle
    print(main_windows)
    # 退出
    driver.quit()

    获取所有窗口句柄:

    # coding = utf-8
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    # 打开百度首页
    driver.implicitly_wait(10)
    driver.get(r'https://www.baidu.com/')
    # 获取当前窗口句柄
    main_windows = driver.current_window_handle
    print(main_windows)
    # 进入注册
    driver.find_element_by_link_text("登录").click()
    # 这里加一个显示等待,不然有时会报找不到“立即注册这个元素”
    WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click()
    # 获取当前所有打开的窗口句柄
    all_windows = driver.window_handles
    print(all_windows)
    # 退出
    sleep(5)
    driver.quit()

    窗口切换

    # coding = utf-8
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe'
    # 启动浏览器
    driver = webdriver.Chrome(executable_path=driverfile_path)
    # 打开百度首页
    driver.implicitly_wait(10)
    driver.get(r'https://www.baidu.com/')
    # 获取当前窗口句柄
    main_windows = driver.current_window_handle
    print(main_windows)
    # 进入注册
    driver.find_element_by_link_text("登录").click()
    # 这里加一个显示等待,不然有时会报找不到“立即注册这个元素”
    WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click()
    # 获取当前所有打开的窗口句柄
    all_windows = driver.window_handles
    print(all_windows)
    # 切换进注册页面
    for handle in all_windows:
        if handle != main_windows:
            driver.switch_to.window(handle)
    # 获取注册页面窗口句柄
    register_windows = driver.current_window_handle
    print(register_windows)
    # 切换回百度首页
    driver.switch_to.window(main_windows)
    print(driver.title)
    # 退出
    sleep(5)
    driver.quit()
  • 相关阅读:
    AS400小结(2)
    java循环链表
    RPG程序中一些小结
    学习AS400心得体会
    Vue学习二
    Vue学习一
    VC视图的多页打印(转)
    MFC对象拖拽功能(不只是文件拖拽)(转)
    Silverlight如何显示、输入上标和下标?
    【2011】Google Maps API3
  • 原文地址:https://www.cnblogs.com/haifeima/p/10209383.html
Copyright © 2011-2022 走看看