我在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
应该在你的情况下工作。