【问题标题】:Kill certain chrome process in python, not all杀死python中的某些chrome进程,而不是全部
【发布时间】:2019-09-04 16:27:22
【问题描述】:
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 进程

有什么办法吗?

【问题讨论】:

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


【解决方案1】:

你说的很对。

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

您可以在Selenium : How to stop geckodriver process impacting PC memory, without calling driver.quit()?找到详细讨论


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

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

您可以在Many process of Google Chrome (32 bit)找到详细讨论

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


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

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

您可以在Way to open Selenium browser not ovelapping my current browser找到详细讨论

【讨论】:

  • 如果这个/任何答案对您有帮助/对您未来的读者有帮助,请投票赞成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 2014-05-22
相关资源
最近更新 更多