簡體   English   中英

如何以編程方式檢查Windows計算機上的打開瀏覽器實例?

[英]How do I programmatically check for open browser instances on a Windows machine?

我在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

我一直在做類似的事情

我想你可能想要pywinauto

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

我使用taskill來使用Java中的窗口標題殺死Android記錄器(logcat),如下所示:

taskkill /F /FI "WINDOWTITLE eq logcat"

和使用文件名的模擬器:

taskkill /F /IM emulator-arm.exe

應該適合你的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM