首页 > 其他 > 详细

【selenium学习 -8】handle的切换

时间:2020-05-19 13:40:32      阅读:44      评论:0      收藏:0      [点我收藏+]

在我们进行测试的过程中,经常会遇到点开超链接打开另一个新窗口的情况,即 target="_blank",这种情况下,如果要在新窗口进行操作,需要将焦点移到新窗口上,本文将介绍这种情况的处理

切换窗口的方法:

1.获取当前页面窗口的句柄
current_window_handle

2.获取所有页面窗口的句柄
window_handles

3.切换句柄
switch_to_window(window_name)

 

实验过程:

打开百度页面 - 点击左上角的“新闻” - 切换到百度新闻的窗口 - 获取新页面的title

 

 实验代码:

from selenium import webdriver
import time

if __name__ == __main__:
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://www.baidu.com/")
    driver.find_element_by_link_text("新闻").click()
    # 获取当前窗口句柄
    current_handle = driver.current_window_handle
    # 获取所有句柄
    handles = driver.window_handles
    # 遍历句柄,并切换到句柄
    for handle in handles:
        if handle != current_handle:
            driver.switch_to.window(handle)
    time.sleep(3)
    print(driver.title)

 

还有一种方式,可以根据目标页面的title或者url进行切换,以下以title为例

from selenium import webdriver
import time

if __name__ == __main__:
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://www.baidu.com/")
    driver.find_element_by_link_text("新闻").click()
    # 获取当前窗口句柄
    current_handle = driver.current_window_handle
    # 获取所有句柄
    handles = driver.window_handles
    # 先切换到每一个handle上,获取页面的title,如果title和目标一致,则停下来
    for handle in handles:
        driver.switch_to.window(handle)
        title = driver.title
        if "百度新闻——海量中文资讯平台" == title:
            break


    print(driver.title)

 

总结:核心内容还是确定好要去的具体页面,然后切换过去。第一种方式感觉适合只新开一个窗口的情况,比较简单。如果有多个窗口,可以采用第二种方式。

【selenium学习 -8】handle的切换

原文:https://www.cnblogs.com/ronyjay/p/12916111.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!