Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium webdriver在没有会话的情况下关闭_Python_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Python Selenium webdriver在没有会话的情况下关闭

Python Selenium webdriver在没有会话的情况下关闭,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我有一个持续6小时的测试。2小时后,由于Chrome浏览器的特性,我的驱动程序速度减慢。解决方案是关闭浏览器并重新启动它。我发现执行driver.quit()有助于提高性能,因为使用了一些内部内存,这会导致测试速度变慢。我想知道是否有选项可以在不关闭驱动程序的情况下使用driver.quit(),因为我需要在该会话中生成的cookie,并且不需要终止正在运行的Python脚本。driver.quit()的目的是关闭所有浏览器窗口并终止WebDriver会话。因此,如果不关闭驱动程序,就不能使用d

我有一个持续6小时的测试。2小时后,由于Chrome浏览器的特性,我的驱动程序速度减慢。解决方案是关闭浏览器并重新启动它。我发现执行
driver.quit()
有助于提高性能,因为使用了一些内部内存,这会导致测试速度变慢。我想知道是否有选项可以在不关闭驱动程序的情况下使用
driver.quit()
,因为我需要在该会话中生成的cookie,并且不需要终止正在运行的Python脚本。

driver.quit()的目的是关闭所有浏览器窗口并终止WebDriver会话。因此,如果不关闭驱动程序,就不能使用
driver.quit()
——这就是它的作用

在我看来,你应该看看为什么你会有这个问题:

  • 是否真的有理由在同一个会话中运行6个小时的测试?当然可能有特殊情况,但良好的做法是将整个测试集合切割成独立的集合,每个集合可以在“干净”环境(即新的浏览器会话)上独立运行。这不仅可以防止您面临的问题,还可以提高测试的可靠性(即,当一个测试扰乱了所有未来的测试执行时,会产生多米诺效应)、调试能力(假设您在3小时运行的测试中遇到问题,并且当您单独运行该测试时,该问题不可再现,或者无法单独运行该测试),以及执行的灵活性

  • 为什么浏览器需要在2小时后重新启动?不,这不是“Chrome的特性”。这是某个地方的一个bug——内存泄漏,或者其他什么。这可能是值得调查的。因为你可以在2小时后停止测试,但是你会告诉你的用户不要使用你的应用程序超过2小时吗?即使它是Selenium驱动程序中的一个bug,为了您和其他所有人的利益,向Selenium开发人员报告它也是值得的


您能发布完整的代码吗?我想知道你是否不是在一个循环中打开多个浏览器。完整的代码是4000行。我在一个较小的代码上测试了这一点,写大文本时中间有1秒的延迟。过了一会儿就慢下来了。我不打开多个浏览器。我正在处理1个会话。这个问题讨论了如何使用pickle在会话之间保存和加载cookie:然后我将至少发布可能指向问题的最小代码。我同意@Kiril S的观点,因为您的代码可能在某个地方有问题,。是开发人员最好的朋友+1.由于我的具体要求,我需要运行测试6小时。没有内存泄漏,因为我正在跟踪脚本中进出的每个字节。我不处理任何内存分配,因为代码只处理打印输出和单击元素。这不仅仅是我的问题。许多人在经过一段时间后会出现硒缺乏的问题。你可以在线阅读。该问题的唯一解决方案是使用driver.quit()并重新启动会话。我不能那样做。