首页 > 解决方案 > 我们如何在循环中创建 selenium webdriver 对象并在循环结束后关闭窗口?

问题描述

所以我试图打开列表中的每个链接(由 for 循环运行)并对该链接执行一些操作。

我想为循环中的每个链接打开一个窗口,对其进行操作,关闭它,然后重新开始循环。

for link in links_list:
    driver = webdriver.Chrome('D:/location-of-driver.exe')
    driver.implicitly_wait(5)

    driver.get(link)

    a_variable = driver.find_element_by_css_selector('selector')

    time.sleep(3)  # required for my usage

    driver.close()  # this I believe should close the window

因此循环迭代 1 次并在再次到达顶部时崩溃。driver.close() 适用于第一次迭代

我希望带有当前链接的窗口打开 3 秒钟,然后循环重新开始。

错误:

Traceback (most recent call last):
  File "./play.py", line 18, in <module>
    driver.get(link)
selenium.common.exceptions.WebDriverException: Message: invalid session id
(Driver info: chromedriver=2.45.615291 
(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 
x86_64)

提前致谢!

标签: pythonpython-3.xseleniumselenium-webdriversleep

解决方案


driver.quit()

这用于退出驱动程序并关闭每个关联的窗口。

driver.close()

这用于关闭当前窗口。

您的错误来自在驱动程序已退出时尝试关闭窗口。

解决方案

仅使用该close方法,您不必quit用于此场景。


推荐阅读