使用Python+Selenium切换浏览器窗口报错:WebDriver无switch_to_window_handles属性
解决Selenium切换窗口时的AttributeError问题
嘿,这个问题我太熟悉啦!你遇到的AttributeError完全是因为方法名称写错了——Selenium的WebDriver对象根本没有switch_to_window_handles这个属性,咱们来一步步把它改对:
错误原因
你调用的browser.switch_to_window_handles()是不存在的方法,正确的窗口切换逻辑是先获取所有窗口句柄,再通过switch_to.window()方法切换到目标句柄。
正确的实现代码
首先要确保你已经触发了打开新窗口的操作(比如点击一个会打开新标签页/窗口的链接),然后用下面的代码切换:
# 先获取所有当前打开的窗口句柄列表 all_window_handles = browser.window_handles # 切换到最后一个打开的窗口(也就是最新的那个) browser.switch_to.window(all_window_handles[-1])
进阶:切换回原窗口
如果之后需要切回最初的窗口,可以先保存初始窗口的句柄,方便后续切换:
# 保存初始窗口的句柄 original_window = browser.current_window_handle # 触发打开新窗口的操作,比如点击链接 browser.find_element(By.LINK_TEXT, "打开新窗口").click() # 获取所有窗口句柄 all_window_handles = browser.window_handles # 遍历找到新窗口的句柄并切换 for handle in all_window_handles: if handle != original_window: browser.switch_to.window(handle) break # 后续需要切回原窗口时,直接用保存的句柄 browser.switch_to.window(original_window)
内容的提问来源于stack exchange,提问作者João Felipe Holanda
相关产品推荐
相关产品推荐

