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()
  • 相关阅读:
    Qualcomm download 所需要的 contents.xml
    “临界知识”的3个底层思维与方法,98%的人都不知道!
    什么是临界知识
    做一个会学习的人
    有效的结构化思维训练,MECE分析法
    那些一眼看透本质的人,逻辑都是这样形成的!
    js设计模式--策略模式
    数学——抽象与具体相结合
    使用POI解析Excel
    合成复用原则——面向对象设计原则
  • 原文地址:https://www.cnblogs.com/haifeima/p/10209383.html
Copyright © 2011-2022 走看看