首页 > 其他 > 详细

selenium浏览器操作篇:浏览器窗口句柄切换

时间:2021-03-05 22:15:09      阅读:26      评论:0      收藏:0      [点我收藏+]

 

什么是浏览器窗口句柄?
当打开一个浏览器并打开了一个新标签页时,该标签页就会有一个句柄标识(句柄值)。直到你关闭了该标签页,该句柄标识(句柄值)才消失。
所以,当我们打开一个浏览器并打开了多个标签页时,关闭一个标签页不会影响其他标签页,就是因为每个标签页有了唯一的标识。

1、获取当前标签页句柄:current_window_handle
示例:

from selenium import webdriver

driver = webdriver.Firefox()
# 打开百度
driver.get("https://www.baidu.com")
# 获取当前标签页的句柄值
c_handle = driver.current_window_handle
print(type(c_handle))
print(c_handle)

运行结果如下:

<class str>
18

我们可以看到,通过current_window_handle获取到了当前标签页的属性值,且该值的类型为字符串。


2,获取浏览器所有标签页的句柄:window_handles
示例:

driver = webdriver.Firefox()
# 打开百度
driver.get("https://www.baidu.com")
# 打开网易门户
js_new_window = "window.open(‘https://www.163.com‘)"
driver.execute_script(js_new_window)
# 获取浏览器中所有标签页的句柄值
handles = driver.window_handles
print(type(handles))
for handle in handles:
    print(handle)

执行结果如下:

<class list>
18
4294967297

我们可以看到,window_handles返回的是一个列表,里面包含了所有的标签页的句柄。


3,切换句柄:switch_to.window()
传参window_name,即传入句柄值
我们看一下window()方法:

    def window(self, window_name):
        """
        Switches focus to the specified window.

        :Args:
         - window_name: The name or window handle of the window to switch to.

        :Usage:
            driver.switch_to.window(‘main‘)
        """
        if self._driver.w3c:
            self._w3c_window(window_name)
            return
        data = {name: window_name}
        self._driver.execute(Command.SWITCH_TO_WINDOW, data)

我们可以看到:window()方法接收参数,并执行command命令进行窗口切换
下面我们看一下切换窗口的示例:

from selenium import webdriver


driver = webdriver.Firefox()
# 打开百度
driver.get("https://www.baidu.com")
# 打开网易门户
js_new_window = "window.open(‘https://www.163.com‘)"
driver.execute_script(js_new_window)
# 获取浏览器中所有标签页的句柄值
handles = driver.window_handles
# 当前窗口句柄值
c_handle = driver.current_window_handle
print("当前标签页句柄值:", c_handle)
# 切换窗口
driver.switch_to.window(handles[1])
# 切换窗口后的句柄值
c1_handle = driver.current_window_handle
print("切换窗口后的标签页句柄值:", c1_handle)

执行结果如下,我们可以看到当前窗口句柄值已经不同了,说明切换成功:

当前标签页句柄值: 18
切换窗口后的标签页句柄值: 4294967297

这个例子的执行表现过程为:打开浏览器并打开百度首页->js打开网易门户->获取所有窗口句柄值->打印当前窗口句柄值->切换窗口->打印当前窗口句柄值(切换
后的窗口)》

selenium浏览器操作篇:浏览器窗口句柄切换

原文:https://www.cnblogs.com/ctltest/p/14487498.html

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