mirror of
https://github.com/dtomlinson91/anno-production-chain-renderer.git
synced 2025-12-21 22:05:46 +00:00
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import pathlib
|
|
import time
|
|
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.chrome.options import Options
|
|
from selenium.webdriver.chrome.service import Service
|
|
from webdriver_manager.chrome import ChromeDriverManager
|
|
|
|
|
|
# URL = "http://localhost:9000/"
|
|
URL = "http://localhost:9000/#/expansions"
|
|
WAIT_TIME = 180
|
|
|
|
|
|
def main():
|
|
# define screenshot file
|
|
screenshot_file = (
|
|
(pathlib.Path(__file__).resolve().parents[0] / "base_production_chains").with_suffix(".png")
|
|
if "expansions" not in URL
|
|
else (pathlib.Path(__file__).resolve().parents[0] / "expansion_production_chains").with_suffix(".png")
|
|
)
|
|
|
|
# create chrome options
|
|
options = Options()
|
|
options.add_experimental_option("detach", True)
|
|
options.add_argument("--headless")
|
|
|
|
# create driver
|
|
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
|
|
driver.maximize_window()
|
|
|
|
# open quasar app locally
|
|
driver.get(url=URL)
|
|
|
|
# wait for page to load
|
|
WebDriverWait(driver=driver, timeout=10.0).until(
|
|
EC.presence_of_element_located((By.XPATH, "//main[contains(@class, 'q-page')]"))
|
|
)
|
|
print(f"Waiting {WAIT_TIME}s for page to load.")
|
|
time.sleep(WAIT_TIME)
|
|
|
|
# get page width and height
|
|
# https://stackoverflow.com/questions/41721734/take-screenshot-of-full-page-with-selenium-python-with-chromedriver/52572919#52572919
|
|
original_size = driver.get_window_size()
|
|
page_width = driver.execute_script("return document.body.parentNode.scrollWidth")
|
|
page_height = driver.execute_script("return document.body.parentNode.scrollHeight")
|
|
driver.set_window_size(width=page_width, height=page_height)
|
|
|
|
element = driver.find_element(by=By.XPATH, value="//main[contains(@class, 'q-page')]")
|
|
element.screenshot(str(screenshot_file))
|
|
|
|
print(f"saved screenshot to {screenshot_file}")
|
|
driver.quit()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|