Python 如何以编程方式检查Windows计算机上打开的浏览器实例?
我用python编写了一个GUI自动化脚本,它打开一个web浏览器,在浏览器中进行一些测试,然后关闭浏览器。它是在一个循环中完成的,这个循环经过数十万次迭代 我遇到了程序挂起的问题,我没有打开任何浏览器实例,有时最多打开20个实例。 我想创建一个错误检查,以确保一次只打开一个浏览器实例(如果有多个实例打开,则完全关闭浏览器并重新启动迭代,和/或在循环迭代之前确保浏览器实例打开) 浏览器的PID在循环的每次迭代中都会发生明显的变化,据我所知,没有办法分配PID。 我想到的另一个解决方案是对终端进行系统调用,并以某种方式利用tasklist和taskkill命令,但仍然没有找到一种方法来完成我想要的任务 如有任何建议,将不胜感激 更新:Python 如何以编程方式检查Windows计算机上打开的浏览器实例?,python,ruby,windows,browser,automation,Python,Ruby,Windows,Browser,Automation,我用python编写了一个GUI自动化脚本,它打开一个web浏览器,在浏览器中进行一些测试,然后关闭浏览器。它是在一个循环中完成的,这个循环经过数十万次迭代 我遇到了程序挂起的问题,我没有打开任何浏览器实例,有时最多打开20个实例。 我想创建一个错误检查,以确保一次只打开一个浏览器实例(如果有多个实例打开,则完全关闭浏览器并重新启动迭代,和/或在循环迭代之前确保浏览器实例打开) 浏览器的PID在循环的每次迭代中都会发生明显的变化,据我所知,没有办法分配PID。 我想到的另一个解决方案是对终端进行
b = (str(os.system('tasklist | find "firefox.exe"')))
if b == '1':
b = 'false'
elif b == '0':
b = 'true'
print b
我知道我可以按名称搜索windows进程,但如何将其转换为布尔表达式,如
if tasklist contains firefox.exe
taskkill firefox.exe
else
open firefox
第二次更新:
b = (str(os.system('tasklist | find "firefox.exe"')))
if b == '1':
b = 'false'
elif b == '0':
b = 'true'
print b
我有以下几点可以用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
我使用taskill使用Java中的窗口标题杀死Android logger(logcat),如下所示:
taskkill /F /FI "WINDOWTITLE eq logcat"
和使用文件名的仿真器:
taskkill /F /IM emulator-arm.exe
应该适合你的情况。我也做过类似的事情 我想你可能想要pywinauto
from pywinauto.findwindows import find_windows
find_windows(best_match='YOURWINDOWNAMEHERE')
如果您的WindowName此处未打开,这将引发异常
编辑:实际上,对于firefox或chrome,只有当“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
在windows中,您可以按名称获取进程,这将对您有所帮助。