selenium使用小记

1、switch_to_window使用踩坑

switch_to_window,其主要被用来切换窗口。

踩坑情景
使用python + selenium爬取csdn博客,由于有些博客点击里面内容后会打开新的页面,使用close()关闭新打开的标签页后,使用switch_to_window切换到原本的博客窗口,但是是使用如下方法:

browser.switch_to_window(browser.window_handles[-1])

这段代码的含义是,切换窗口到当前所有窗口的最后一个窗口。然而在代码运行时可能会出现一些错误,比如:

selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed

错误提示为目标窗口已经关闭了,这是实际窗口和代码中预设窗口不一致导致的。

解决方案
使用更为精确的目标窗口进行切换。
例如:当前有博客标签页和新打开的标签页,我们关闭新打开的标签页后要切换到博客标签页,就通过之前设定的博客窗口句柄进行切换。

# 在进入博客标签页后就标记当前的窗口句柄
blog_handle = browser.current_window_handle

#其他代码,省略
......

# 在关闭新打开的标签页,切换回博客标签页时,使用之前标记好的窗口句柄进行切换
browser.switch_to_window(blog_handle)  

结果,代码顺利运行,没有出现上面的错误。

注意:在访问过程中切换进新打开的页面可以直接使用browser.switch_to_window(browser.window_handles[-1])进行切换,例如从csdn中的作者专栏页面,通过点击作者专栏页面的博客进入博客页面,此时将浏览器窗口切换到博客页面就可以使用代码browser.switch_to_window(browser.window_handles[-1])进行切换,但是从博客页面切换回作者专栏页面就需要采用之前介绍的方法,根据之前标记好的窗口句柄进行精确切换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值