Web自动化测试:浏览器不同页签之间的切换(handle)

一、切换页签(句柄handle)的基础用法:
备注:部分方法为老写法,官方已经不推荐使用;点击这篇文章查看切换handle新写法。

1.获取浏览器当前所在页签的句柄:

current_window_handle()

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

window_handles()

3.将定位的页面转到指定的window_name页面

switch_to_window(window_name):

window_name:指定页面窗口的handle

二、关于webdriver源码展示
  @property

def current_window_handle(self):

“”"

Returns the handle of the current window.

:Usage:

driver.current_window_handle

“”"

if self.w3c:

return self.execute(Command.W3C_GET_CURRENT_WINDOW_HANDLE)[‘value’]

else:

return self.execute(Command.GET_CURRENT_WINDOW_HANDLE)[‘value’]

@property

def window_handles(self):

“”"

Returns the handles of all windows within the current session.

:Usage:

driver.window_handles

“”"

if self.w3c:

return self.execute(Command.W3C_GET_WINDOW_HANDLES)[‘value’]

else:

return self.execute(Command.GET_WINDOW_HANDLES)[‘value’]

def switch_to_window(self, window_name):

“”" Deprecated use driver.switch_to.window

“”"

warnings.warn(“use driver.switch_to.window instead”,

DeprecationWarning, stacklevel=2)

self._switch_to.window(window_name)
三、实例演示
百度贴吧的场景,如何通过切换窗口来定位其他窗口页面的元素。我们可以通过页面title的变化来判断handle是否已经切换;然后我们关闭这个新打开的页签后,需要手动切换到第一个handle,才能在第一个页面操作。

在这里插入图片描述
代码演示:

from selenium import webdriver
from time import sleep

# sleep方法是为了初学者能够更好地了解操作的变化

driver = webdriver.Chrome()

# get() 进入贴吧页面
driver.get(“https://tieba.baidu.com/”)
sleep(1)

# 点击title为娱乐明星的标签元素
driver.find_element_by_css_selector(“a[title = ‘娱乐明星’]”).click()
sleep(5)

# 获取全部窗口的handle
all = driver.window_handles
print(“所有页签handle %s” % all)

# 获取当前窗口的handle(贴吧首页)
now_page = driver.current_window_handle
print(“当前页面handle %s” % now_page)

# 获取当前页面的title(当前title)
title_first_page = driver.title
print(“切换前title %s” % title_first_page)

# 将页面handle转到娱乐明星页面
driver.switch_to_window(all[1])

# 获取当前页面的title(切换handle后)
title_next_page = driver.title
print(“切换后title %s” % title_next_page)

# 关闭当前页签
sleep(2)
driver.close()

# 必须要切换回另一个页签窗口
driver.switch_to_window(all[0])
print(“切换回第一个页签:%s” % driver.title)
输出结果:

所有页签handle [‘CDwindow-7FDD7BD3B5CCC6AB2F24D23BFAAEE3B3’, ‘CDwindow-BB6E2A7BB6B1A175947956E61DCF64BD’]
当前页面handle CDwindow-7FDD7BD3B5CCC6AB2F24D23BFAAEE3B3
切换前title 百度贴吧——全球最大的中文社区
切换后title 娱乐明星_百度贴吧
切换回第一个页签:百度贴吧——全球最大的中文社区

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值