mirror of
https://github.com/dtomlinson91/anno-production-chain-renderer.git
synced 2025-12-22 06:15:45 +00:00
add screenshotter script
This commit is contained in:
60
utils/screenshot.py
Normal file
60
utils/screenshot.py
Normal file
@@ -0,0 +1,60 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user