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

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

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

代码如下

from selenium import webdriver

driver = webdriver.Chrome()

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

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

大概的业务代码是这样的

class Example:
    def __init__(self):
        self.driver = driver.Chrome()


    def execute(self):
        self.driver.get("url")
        ...
        ...
        ...

    def __del__(self):
        if self.driver:
            self.driver.quit()
            self.driver = None

try:

    e = Example()
    e.execute()
    e = None
except:
    if e:
        e = None
finally:
    e = None

浏览器最后无论如何都会被设置成关闭,但是有的时候就是执行完了所有的步骤之后就是不会自动关闭, 页面一直挂在某一个页面, 然后重新调度该任务,又会自动的完成并且关闭

更换新版本驱动和浏览器已经不会出现关不掉浏览器的问题 ----------------------- 以下是精选回复-----------------------

答:driver.close ()
然后再 driver.quit()试试看?
会不会是 webdriver.exe 的版本匹配问题?
答:1.chromedriver 和 chrome 版本匹配的问题.
2.内部逻辑出现错误, 异常报错, 未关闭(你的描述可能排除此项)
3.引用的某个库异常, 但是未抛出, 你捕获不到. 但是依旧是错了. 所以卡在那.
常见就这三种.
答:加个 try catch ,看下异常。不会无缘无故退出
答:selenium 确实会存在部分浏览器未关闭的情况,之前有个项目用到集群,然后慢慢机器内存就炸了,然后发现是浏览器未关闭。或者是浏览器到达了数量,无法再请求新浏览器导致连接不上的问题。这个暂时解决办法就是用脚本关闭一些运行比较久的浏览器
答:我用 java 也会遇到这样的情况,版本都是匹配的...
我现在是定时 kill 进程

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 想请问一下 selenium 中会不会遇到有时会不会自动关闭浏览器的情况

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情