【心善渊&Selenium3.0基础】— 16、Selenium中多标签/多窗口切换操作

文章目录

      • 1、多标签/多窗口之间的切换
        • 场景:
        • 操作方法:
      • 2、练习

1、多标签/多窗口之间的切换

场景:

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。这种情况下,需要识别多标签或窗口的情况。

操作方法:

  • switch_to.window()方法:切换窗口。可以实现在不同的窗口之间切换。
  • current_window_handle: 获得当前窗口句柄。
  • window_handles: 获取所有窗口句柄。

提示:句柄就可以理解成浏览器窗口的id值。

操作说明:

  1. 获取所有窗口的句柄

    handles = driver.window_handlers

    调用该方法会得到一个列表,在selenium运行过程中的每一个窗口,都有一个对应的值存放在里面。

    (换句话说,有多少个窗口,就有多少个句柄)

  2. 通过窗口的句柄进入的窗口

    driver.switch_to_window(handles[n])

2、练习

"""
1.学习目标:
    必须掌握web中多窗口切换方法
2.语法(操作步骤)
    2.1 获取当前窗口句柄
        driver.current_window_handle
    2.2 点击页面中的超链接触发多窗口
    2.3 获取所有窗口句柄
        driver.window_handles
    2.4 进入新窗口
        switch_to.window(handles[1])
    2.5 操作新窗口中的元素
        按实际工作需求编写
    2.6 退出新窗口
        switch_to.window(handles[0])

3.需求
    在页面中,实现多窗口切换。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开我的Python文档页面
url = "https://blog.csdn.net/Liuyuelinjiayou/article/details/105789238"
driver.get(url)
sleep(2)

# 4. 多窗口切换操作
# 4.1 获取当前窗口句柄
handle = driver.current_window_handle
print('点击之前的窗口句柄是:', handle)
print('点击前的url:', driver.current_url)

# 4.2 点击页面中的超链接触发多窗口
driver.find_element_by_link_text("PyCharm下载与安装").click()
sleep(2)

# 4.2 获取所有窗口句柄
handles = driver.window_handles

# 4.3 进入新窗口
driver.switch_to.window(handles[1])
print('点击之后浏览器所有的窗口句柄是:', handles)
print('点击后的url:', driver.current_url)

# 4.5 退出新窗口
# 你需要退到哪个窗口就写哪个窗口的handle索引
# 因为handle在上边赋值等于第一个窗口了,这里就可以写handle
# 也可以写handles[0]
driver.switch_to.window(handle)
sleep(10)

# 5.关闭浏览器
driver.quit()

"""
输出结果:
点击之前的窗口句柄是: CDwindow-6F1E6437F354913663E6A7E5A1486784
点击前的url: https://blog.csdn.net/Liuyuelinjiayou/article/details/105789238

点击之后浏览器所有的窗口句柄是: ['CDwindow-6F1E6437F354913663E6A7E5A1486784', 'CDwindow-48640D53F053821ED38D21B87E549A73']
点击后的url: https://blog.csdn.net/Liuyuelinjiayou/article/details/105729957
"""

你可能感兴趣的:(Selenium基础)