• 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()
  • 相关阅读:
    经典数组排序方法------快速排序法
    经典数组排序方法------选择排序法,冒泡排序法
    两个非常好的bootstrap模板,外送大话设计模式!
    商场促销-策略模式(和简单工厂模式很像的哇) C#
    代码无错就是优?简单工厂模式 C#
    大话设计模式(C#)
    马加爵遗书 VS 药家鑫遗书
    GIT 常用命令
    Random快速产生相同随机数的原因及解决方案
    JSON WEB TOKEN,简单谈谈TOKEN的使用及在C#中的实现
  • 原文地址:https://www.cnblogs.com/eastonliu/p/9105821.html
Copyright © 2020-2023  润新知