• 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()
  • 相关阅读:
    js学习(三)对象与事件
    js学习(二)
    js学习(一)
    SSM+Redis结构框架及概述
    javaBean、EJB、POJO
    flex布局时的居中问题
    layui后台管理系统的坑
    基于element的模糊查询
    vue数组的运用
    uni-app 图片上传(uploadFile)
  • 原文地址:https://www.cnblogs.com/haifeima/p/10209383.html
Copyright © 2020-2023  润新知