python - 我们如何在循环中创建 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)
提前致谢!
解决方案
driver.quit()
这用于退出驱动程序并关闭每个关联的窗口。
driver.close()
这用于关闭当前窗口。
您的错误来自在驱动程序已退出时尝试关闭窗口。
解决方案
仅使用该close
方法,您不必quit
用于此场景。
推荐阅读
- django - 使用 Chart.js 3.6 版本时,图表未显示在 django 应用程序中
- android - 无法从 Android Studio 编辑或查看代码
- go - 去 redis HMSet 失败
- django - django-rest-framework-social-oauth2:错误 400 - redirect_uri_mismatch
- javascript - 如何在javascript的同级目录中创建图像名称数组?
- powerbi - 为什么我不能根据参数表的值过滤列?
- eclipse-cdt - CreateProcess error=206, Eclipse CDT with GCC compile ThreadX+GUIX
- codeigniter - (Codeigniter) 回显结果视图自动插入数据库
- reactjs - 基于条件的 API 调用
- azure - 出站 IP 地址 Azure API 管理