我用python编写了一个GUI自动化脚本,它打开一个web浏览器,在浏览器中进行一些测试,然后关闭浏览器。它是在经过数十万次迭代的循环中这样做的。
我遇到了一些问题,程序会挂起,并且不会打开浏览器实例,有时甚至会打开多达20个实例。我希望创建一个错误检查,以确保一次只打开一个浏览器实例(如果有许多实例打开,并且/或在遍历循环的迭代之前确保浏览器实例是打开的,则完全关闭浏览器并重新启动迭代)。
浏览器的PID显然在循环的每一次迭代中都发生了变化,据我所知,没有办法分配PID。我想到的另一个解决方案是对终端进行系统调用,并以某种方式使用tasklist和taskkill命令,但仍然没有想出一种方法来做我想做的事情。
如有任何建议,将不胜感激!
更新:
我知道我可以按名称搜索windows进程,但我如何将其放入布尔表达式,如
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发布于 2013-05-07 22:19:58
我一直在做类似的事情
我想你可能想要
from pywinauto.findwindows import find_windows
find_windows(best_match='YOURWINDOWNAMEHERE')如果YOURWINDOWNAMEHERE未打开,则会引发异常。
编辑:实际上,对于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发布于 2013-05-07 21:15:03
我通过使用Java窗口标题来杀死Android日志程序(logcat),如下所示:
taskkill /F /FI "WINDOWTITLE eq logcat"以及使用文件名的模拟器:
taskkill /F /IM emulator-arm.exe应该在你的案子里起作用。
https://stackoverflow.com/questions/16428588
复制相似问题