【问题标题】:Chromedriver closing after test测试后 Chromedriver 关闭
【发布时间】:2017-09-22 13:35:42
【问题描述】:

所以我的理解是调用 driver.quit 或 close 是关闭驱动程序和相关窗口的正确方法。

但是,在运行我的测试时,似乎即使不调用 driver.quit 而是调用 pass,窗口仍然会关闭。

我正在使用 python 和通过 pytest 执行的 unittest 测试用例。我还通过 Pycharm 运行标准单元。在所有情况下,浏览器都会按说明关闭。我希望浏览器保持对我可以调试测试的位置开放。我可以调用 sleep(9000) 但这似乎很愚蠢。

此外,在某些机器上注释掉退出时浏览器保持打开状态,但在其他具有相同 chromedriver、Chrome 版本和代码的机器上则不然。

分析 chromedriver 日志,它似乎注册了一个 QuitAll 命令,但我不知道它可以从哪里得到它。 pyc文件不能被覆盖吗?

退出代码:

def tearDown(self):
    pass
    # self.driver.quit()

【问题讨论】:

    标签: python python-3.x selenium selenium-chromedriver python-unittest


    【解决方案1】:

    一旦您的脚本因the code here 而结束,服务将停止。

    如果您希望 chrome 和 chromedriver 之后保持打开状态,您可以在启动 chromedriver 时添加detach 选项:

    from selenium.webdriver import ChromeOptions, Chrome
    opts = ChromeOptions()
    opts.add_experimental_option("detach", True)
    driver = Chrome(chrome_options=opts)
    

    【讨论】:

    • 我尝试添加 --detach 作为实验选项,但无济于事。我会尝试一个正常的选项,看看效果如何。知道为什么它只在某些机器上关闭吗?
    • 哦,对了,不是一个论点,而是一个实验性的选择......不确定某些机器上发生了什么,理论上它应该每次都关闭。我已经更新了我的代码,尝试不带-- 的实验选项
    • 原来我认为没有正确关闭浏览器的 PC 遇到了另一个错误。我的任务管理器中有约 400 个 chromedriver 实例,使用约 8GB 的​​ RAM,因为这些进程从未关闭。我不知道我是怎么做到的。但是,此解决方案适用于所有机器。
    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多