想请问一下 selenium 中会不会遇到有时会不会自动关闭浏览器的情况

2020-09-13 13:36:18 +08:00
 18870715400

代码如下

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("url")
driver.find_element_by_xpath("xxx")
...
...
...
driver.quit()

中间的省略的就是执行的相关功能,在执行任务的结果中发现有的执行完成了之后不会自动关闭浏览器,所有的步骤都是正常执行,但是浏览器就是没有关闭, 导致堆积的浏览器越来越多, 机器越来越卡.然后重新调了同一个任务,发现正常执行,最后也会正常关闭, 但是为什么前面的同一个任务为什么不会自动关闭呢?这种情况偶尔出现.我排查了自己的代码, 没有发现相关的 bug, 这是 selenium 包自带的 bug 么?

2008 次点击
所在节点    Python
9 条回复
qazwsxkevin
2020-09-13 13:57:37 +08:00
driver.close ()
然后再 driver.quit()试试看?
会不会是 webdriver.exe 的版本匹配问题?
jeeyong
2020-09-13 14:59:29 +08:00
1.chromedriver 和 chrome 版本匹配的问题.
2.内部逻辑出现错误, 异常报错, 未关闭(你的描述可能排除此项)
3.引用的某个库异常, 但是未抛出, 你捕获不到. 但是依旧是错了. 所以卡在那.
常见就这三种.
lusi1990
2020-09-13 15:07:58 +08:00
加个 try catch ,看下异常。不会无缘无故退出
wutongshuxia
2020-09-13 15:12:47 +08:00
selenium 确实会存在部分浏览器未关闭的情况,之前有个项目用到集群,然后慢慢机器内存就炸了,然后发现是浏览器未关闭。或者是浏览器到达了数量,无法再请求新浏览器导致连接不上的问题。这个暂时解决办法就是用脚本关闭一些运行比较久的浏览器
chocotan
2020-09-13 15:17:55 +08:00
我用 java 也会遇到这样的情况,版本都是匹配的...
我现在是定时 kill 进程
18870715400
2020-09-13 22:03:04 +08:00
@qazwsxkevin 不会是匹配问题,
@jeeyong 同一个任务重新再跑一次没有问题, 浏览器未关闭只是偶尔的情况, 日志里面没有相关错误的, 可就是没有关闭.
jeeyong
2020-09-13 22:19:17 +08:00
@18870715400 配置够吗?
如果是 chromedriver 新版, 可以排除 chrome+chromedriver 的问题.
我一个月十几万次的开关.没问题
18870715400
2020-09-13 22:26:08 +08:00
@jeeyong 是 chrome 50 多的版本
18870715400
2020-09-13 22:28:57 +08:00
@jeeyong 明天可以先试试使用新的版本的 chrome 和 chromedriver , 先跑跑看会不会再出现这种情况

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/706574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX