为啥 switch_to_window() 方法不适用于 Python 中的 selenium webdriver?

Posted

技术标签:

【中文标题】为啥 switch_to_window() 方法不适用于 Python 中的 selenium webdriver?【英文标题】:Why is switch_to_window() method not working for selenium webdriver in Python?为什么 switch_to_window() 方法不适用于 Python 中的 selenium webdriver? 【发布时间】:2022-01-18 10:12:55 【问题描述】:

我正在尝试使用 Python selenium webdriver 切换到新打开的窗口。该代码以前运行良好,但现在显示错误。令人惊讶的是,switch_to_window() 方法没有被 Python 识别并且没有声明可以去。

def process_ebl_statements(self, account_number):

    current_window = self.driver.current_window_handle
    all_windows = self.driver.window_handles

    print("Current window: ", current_window)
    print("All windows: ", all_windows)
    number_of_windows = len(all_windows)
    self.driver.switch_to_window(all_windows[number_of_windows - 1])

错误详情:

'WebDriver' object has no attribute 'switch_to_window'

【问题讨论】:

The code worked fine beforebut now it is showing error 之间发生了哪些变化? 还有 driver.switch_to_window 被折旧使用 driver.switch_to.window ***.com/questions/57567464/… 也可以使用新窗口。 【参考方案1】:

此错误消息...

'WebDriver' object has no attribute 'switch_to_window'

...暗示WebDriver 对象不再支持属性switch_to_window()


switch_to_window

switch_to_window 在 Selenium v2.41 中已弃用:

硒 2.41

弃用 switch_to_* 以支持 driver.switch_to.*

因此您会看到错误。


解决方案

您需要使用switch_to,而不是switch_to_window

例子:

driver.switch_to.active_element driver.switch_to.alert driver.switch_to.default_content() driver.switch_to.frame() driver.switch_to.parent_frame() driver.switch_to.window('main')

【讨论】:

以上是关于为啥 switch_to_window() 方法不适用于 Python 中的 selenium webdriver?的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫AttributeError: ‘WebDriver‘ object has no attribute ‘switch_to_window‘

selenium 常用API

你应该同步运行方法吗?为啥或者为啥不?

为啥不允许方法?

为啥不调用种子方法?

为啥这种方法不起作用?