python - 在 python 中杀死某些 chrome 进程,而不是全部

标签 python selenium google-chrome selenium-webdriver selenium-chromedriver

import subprocess
from selenium import webdriver
chrom_path = r"C:\Users\user\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrom_path)
link = 'https://google.com'
driver.get(link)
s = driver.page_source
print((s.encode("utf-8")))
subprocess.call("TASKKILL /f  /IM  CHROME.EXE")
subprocess.call("TASKKILL /f  /IM  CHROMEDRIVER.EXE")

这段代码运行良好,但我的代码杀死了所有 chrome 进程,而不仅仅是这个特定的进程。我只想杀死这个打开 https://google.com 的 chrome 进程

有什么办法可以做到这一点吗?

最佳答案

你说得很对。

  • subprocess.call("TASKKILL/f/IM CHROME.EXE"):这行代码将终止所有正在运行的 chrome 进程。
  • subprocess.call("TASKKILL/f/IM CHROMEDRIVER.EXE"):这行代码将终止所有正在运行的 ChromeDriver 进程。

You can find a detailed discussion in Selenium : How to stop geckodriver process impacting PC memory, without calling driver.quit()?

<小时/>

仅此 很难识别并杀死它打开由 ChromeDriver 打开的 https://google.com 的进程,因为当通过 Google Chrome 执行自动化测试时,您将观察到可能有数十个 Google Chrome 进程正在运行,可以通过 Windows 任务管理器的“进程”选项卡进行观察。

根据文章Why Google Chrome Has So Many Processes为了获得更好的用户体验Google Chrome 发起了大量 自动化测试打开的每个选项卡的后台进程。 Google 试图通过将每个网页分成其认为合适的多个进程来保持浏览器的稳定,以确保如果页面上的一个进程失败,则可以终止或刷新该特定进程,而无需终止或刷新整个进程页。

You can find a detailed discussion in Many process of Google Chrome (32 bit)

因此,检索单个 pid 并终止唯一的进程对您没有帮助。

<小时/>

根据最佳实践,您的测试平台应该是:

  • 配置了所有必需的软件二进制文件
  • 测试执行必须在受控环境中执行,以优化性能。
  • 当您的@Tests正在执行时,它应该不受手动干预
  • 特别是当您的@Tests基于Selenium,而测试执行处于InProgress时,测试环境不应受到干预。

You can find a detailed discussion in Way to open Selenium browser not ovelapping my current browser

关于python - 在 python 中杀死某些 chrome 进程,而不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57792469/

相关文章:

python - 检查 dict key 是否是 Python 字典中任何其他元素的子字符串?

Python - 通过 Firefox 的 Tor 浏览器,无法单击按钮

c++ - Chrome 使用移动用户代理不工作

node.js - 了解 npm 的 "skippingAction Module is inside a symlinked module"

javascript - Chrome 默认弹窗 如何使用?

python - 在 PYQT 中使用图像填充列表

python - random.sample() 如何控制再现性

python - 负常量和运算符优先级

json - "Unexpected token in JSON at position 0"在具有有效 JSON 的 Node 中使用 JSON.parse

google-chrome - "unsafely-treat-insecure-origin-as-secure"标志在 Chrome 上不起作用