zoukankan      html  css  js  c++  java
  • Selenium 多窗口切换

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

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

    那我们怎么在这两个窗口之间进行切换呢?每个浏览器窗口都有一个唯一的属性句柄(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()
  • 相关阅读:
    20131001国庆作业例2-10,2-11
    20131001国庆作业例2-7,2-8,2-9
    20131001国庆作业例2-4,2-5,2-6
    20131001国庆作业第二章例2-1,2-2,2-3
    20131001国庆作业第一章例1-1
    20130930C语言作业基础练习
    编程心得4
    编程心得3
    编程心得1
    714
  • 原文地址:https://www.cnblogs.com/eastonliu/p/9105821.html
Copyright © 2011-2022 走看看