Проверьте, завершил ли Firefox загрузку страницы с помощью Win32API - PullRequest
0 голосов
/ 30 октября 2019

Можно ли проверить, завершил ли Firefox загрузку страницы с использованием Python и Win32API (или связанных)?

У меня есть код ниже, который находит PID для Firefox, и хотел бы разработать такую ​​функцию, как is_loaded(PID), которая возвращает истину или ложь, в зависимости от того, загружена страница или нет.

import win32api
import win32process
import win32con

from pynput.mouse import Listener as mouseListener
import time,win32gui

def on_click(x, y, button, pressed):
    if pressed:
        #print("Clicked!!")
        return False

def selectWindow():
    with mouseListener(on_click=on_click) as listener:
        print("Select a Firefox tab, i.e. click on it...")
        listener.join()
    time.sleep(0.1) # A delay is sometimes required. Reason unkonw.
    hwnd = win32gui.GetForegroundWindow()
    return hwnd



def main():
    hwnd = selectWindow()
    print("hwnd:",hwnd)

    pid = win32process.GetWindowThreadProcessId(hwnd)
    print("pid:",pid)

    handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid[1])
    proc_name = win32process.GetModuleFileNameEx(handle, 0)
    print("proc_name:",proc_name)

    # Code to write:
    # Check if Firefox page is loaded
    # status = is_loaded(pid) # Should return true of false

if __name__ == "__main__":

    main()

Комментарий 1: Это не вопрос использованияJS или Selenium

Комментарий 2: Для решения этой задачи сегодня я использую нестабильный код, который многократно делает скриншоты окна Firefox и ищет исчезновение креста рядом с адресной строкой, но мне хотелось бызаменить код на что-то более стабильное и элегантное.

The disappearance of the cross indicates the the page is loaded in Firefox.

...