PythonとSeleniumとWebDriverでDOM構築完了待機とWEB読込完了待機

DOM構築完了待機の作成、および、
WEB読込完了待機の作成をしてみたが、
SeleniumのPageLoadStrategyは、
デフォルトでページが完全にロードされるまで、
待機する仕様のようなので、必要無かった...orz

import time

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait


def function_in_function(outer):
    def _predicate(inner):
        print(outer)
        print(inner)

    return _predicate


def expected_conditions_document_ready_state_complete_or_interactive():
    def _predicate(driver):
        document_ready_state = driver.execute_script("return document.readyState")
        print(document_ready_state)
        return document_ready_state == "complete" or document_ready_state == "interactive"

    return _predicate


def expected_conditions_document_ready_state_complete():
    def _predicate(driver):
        document_ready_state = driver.execute_script("return document.readyState")
        print(document_ready_state)
        return document_ready_state == "complete"

    return _predicate


def main():

    print("PRESS ENTER KEY TO BOOT")
    input()

    # function_in_function("Hello")("World")

    driver = None

    try:
        # --------------------------------------------------------------
        # Firefox
        # --------------------------------------------------------------
        options = webdriver.FirefoxOptions()
        options.page_load_strategy = "none"
        driver = None
        driver = webdriver.Firefox(options=options)
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    try:
        # --------------------------------------------------------------
        # Firefox
        # --------------------------------------------------------------
        driver = None
        driver = webdriver.Firefox()
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    try:
        # --------------------------------------------------------------
        # Edge
        # --------------------------------------------------------------
        options = webdriver.EdgeOptions()
        options.page_load_strategy = "none"
        driver = None
        driver = webdriver.Edge(options=options)
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    try:
        # --------------------------------------------------------------
        # Edge
        # --------------------------------------------------------------
        driver = None
        driver = webdriver.Edge()
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    try:
        # --------------------------------------------------------------
        # Chrome
        # --------------------------------------------------------------
        options = webdriver.ChromeOptions()
        options.page_load_strategy = "none"
        driver = None
        driver = webdriver.Chrome(options=options)
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    try:
        # --------------------------------------------------------------
        # Chrome
        # --------------------------------------------------------------
        driver = None
        driver = webdriver.Chrome()
        driver.get("https://feo52.hatenablog.jp/entry/2022/01/01/000001")
        print("get")
        time.sleep(1)
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete_or_interactive())
        WebDriverWait(driver, 10).until(expected_conditions_document_ready_state_complete())
        time.sleep(1)
    except Exception as e:
        print(e)
    finally:
        driver = driver.quit() if driver is not None else None

    print()
    print("PRESS ENTER KEY TO EXIT")
    input()


if __name__ == "__main__":
    main()

Link1

https://www.selenium.dev/ja/documentation/
https://www.selenium.dev/ja/documentation/webdriver/
https://www.selenium.dev/ja/documentation/webdriver/drivers/options/
https://www.selenium.dev/ja/documentation/webdriver/drivers/options/#pageloadstrategy

Link2

https://www.selenium.dev/selenium/docs/api/py/
https://www.selenium.dev/selenium/docs/api/py/api.html
https://www.selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.wait.html
https://www.selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html

Link3

https://github.com/SeleniumHQ/selenium
https://github.com/SeleniumHQ/selenium/tree/trunk/py/selenium/webdriver
https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/support/wait.py
https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/support/expected_conditions.py