from pyvirtualdisplay import Display
from gologin import GoLogin
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import os
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# Starte virtuellen Bildschirm (Xvfb)
display = Display(visible=0, size=(1920, 1080))
display.start()

# Initialize GoLogin
gl = GoLogin({
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2ODQzMzQ5MjIwMDMwYjQ0OTdlZmVmN2YiLCJ0eXBlIjoiZGV2Iiwiand0aWQiOiI2ODQ0NDA0MDYyNjQ0YWU1NzQ5ODI2MWMifQ.vj-RJv3gm0KpGnb0fAtmipDS2pDnLAFlDik8QKpsc8A",
    "extra_params": [
        "--no-sandbox",
        "--disable-dev-shm-usage",
        "--disable-software-rasterizer",
    ],
    "profile_id": '6862707433cd4c3c471f2ffe',
})

# Start Browser and get websocket url
debugger_address = gl.start()
chromium_version = gl.get_chromium_version()

# Install WebDriver
service = Service(ChromeDriverManager(driver_version=chromium_version).install())

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", debugger_address)
chrome_options.add_argument("--window-size=1920,1080")

# Start WebDriver

driver = webdriver.Chrome(service=service, options=chrome_options)
driver.set_window_size(1920, 1080)

driver.get("https://browserleaks.com/webgl")
print(driver.title)

# Warte und interagiere
time.sleep(5)

# Screenshot speichern
driver.save_screenshot("screenshot187111.png")
time.sleep(3)

# Aufräumen
driver.quit()
gl.stop()
display.stop()