Lad*_*018 5 python firefox selenium selenium-firefoxdriver geckodriver
我正在使用 python 3.7 + selenium + geckodriver.exe + firefox 70.0.1x64,我知道driver.quit()可以关闭firefox窗口,但在某些情况下我无法完全退出firefox,我不知道为什么,这是我的代码:
from selenium import webdriver
import time
def func1():
driver = webdriver.Firefox()
i = 0
while True:
try:
if i > 10 and driver is not None:
driver.quit()
driver = None
print('quit success')
i += 1
print(i)
time.sleep(1)
except KeyboardInterrupt:
if driver is not None:
driver.quit()
driver = None
print('keyboard quit success')
if __name__ == '__main__':
func1()
Run Code Online (Sandbox Code Playgroud)
通过这段代码,有两种方法可以关闭 Firefox 窗口:
1-等待 10 秒。
2-使用 Ctrl+C。
然后我测试方法1
python test1.py
Run Code Online (Sandbox Code Playgroud)
当firefox winodw显示时,我注意到任务管理器中有6个进程,就像这样

然后我等了10秒,一切都很好,6个进程消失了,像这样:
然后我测试方法2
我在10秒内按Ctrl+C,结果如下:
你可以看到还有5个进程活着,只有1个进程消失了,我不知道为什么,有人可以帮助我吗?非常感谢!
当通过Mozilla Firefox执行自动化测试时,您会发现可能有六个Mozilla Firefox进程正在运行,可以通过 Windows 任务管理器的选项卡进行观察。Processes
根据文章多进程 Firefox:提高浏览器稳定性、性能和安全性所需了解的一切Firefox已将内容进程的数量增加到四个,以保证 Firefox 中的稳定人口,现在是多进程 Firefox,也称为如电解或e10S。多进程架构有助于将任务分离为进程,因为Electrothesis功能在后台子进程中托管、渲染或执行 Web 相关内容,这些子进程通过各种 ipdl 协议与“父”Firefox 浏览器进行通信。此外,多进程 Firefox 将 NPAPI 插件、媒体播放和 Web 内容移动到子进程,从而将它们与浏览器的核心分开。
firefox.exe当您运行进程管理器(即 Windows 任务管理器)时,您可以观察到几个进程,这本质上意味着电解已启用。显然 Firefox 应该像以前一样运行,但理想情况下启用多进程功能应该立即提高浏览器的性能和稳定性。但是,您可能会注意到 RAM 使用量高于平常。Mozilla 确认,带有 Electrothesis 功能的 Firefox 将多使用约20% 的RAM。您可以更改 Firefox 用于其多进程功能的进程数。
在您的第一个用例中,当您调用driver.quit()父 Firefox 进程和所有子 Firefox 进程时,父 Firefox 进程会以编程方式销毁。
您可以在 Selenium 中找到详细的讨论:如何停止 geckodriver 进程影响 PC 内存,而不调用 driver.quit()?
在你的第二个用例中,你按下了Ctrl4后c,当发生时,你的程序被中止,大概GeckoDriver失去了对Mozilla Firefox浏览器进程的控制。然而,仍有1 个进程被终止,但其余进程仍然悬空。KeyboardInterruptdriver.quit()
您可以在Google Chrome(32位)的许多进程中找到相关讨论
| 归档时间: |
|
| 查看次数: |
3813 次 |
| 最近记录: |