如何以编程方式检查Windows计算机上打开的浏览器实例?

我在python中编写了一个GUI自动化脚本,它打开一个Web浏览器,在浏览器中做一些testing,然后closures浏览器。 它通过数十万次迭代循环完成。

我遇到了程序挂起的问题,我不会打开浏览器实例,有时最多打开20个实例。 我想创build一个错误检查,以确保一次只打开一个浏览器实例(完全closures浏览器并重新启动迭代,如果有许多实例打开和/或确保浏览器实例打开之前,通过循环迭代)。

浏览器的PID显然会随着循环的每次迭代而改变,据我所知,没有办法分配PID。 我想到的另一个解决scheme是对terminal进行系统调用,并以某种方式利用tasklist和taskkill命令,但还没有find一种方法来做我想做的事情。

任何build议将不胜感激!

更新:

我知道我可以通过名称search窗口进程,但我怎么会把它放入一个布尔expression式

if tasklist contains firefox.exe taskkill firefox.exe else open firefox 

第二次更新:

我有以下,我能够在Ruby中的代码工作:

  if system('tasklist | find "firefox.exe"') == true a = 1 elsif system('tasklist | find "firefox.exe"') == false a = 0 end 

我将如何在Python中完成这个任务?

答我正在找:

 b = (str(os.system('tasklist | find "firefox.exe"'))) if b == '1': b = 'false' elif b == '0': b = 'true' print b 

我一直在做类似的事情

我想你可能想pywinauto

 from pywinauto.findwindows import find_windows find_windows(best_match='YOURWINDOWNAMEHERE') 

如果YOURWINDOWNAMEHERE未打开,则会引发异常

编辑:实际上为Firefox或铬,它只适用于“YOURWINDOWNAMEHERE”是什么页面是例如这个网页是“python – 我如何编程…”

如果它发现它,它会返回一个int,据我所知,这个int应该能够引用窗口。

例:。

 >>>find_windows(best_match="calculator") #this gets an exception # ::I manually open Calculator now :: >>>find_windows(best_match="calculator") [12345] #orwhatever process number it gets 

我使用taskill来使用Java的窗口标题来杀死Android记录器(logcat),如下所示:

 taskkill /F /FI "WINDOWTITLE eq logcat" 

和使用文件名的模拟器:

 taskkill /F /IM emulator-arm.exe 

应该在你的情况下工作。