78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Prepare the Firefox-style suggestions screenshot."""
|
|
|
|
import time
|
|
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
|
|
|
|
def _wait_for_body_attr(driver, attr, timeout=15):
|
|
WebDriverWait(driver, timeout).until(
|
|
lambda d: bool(d.find_element(By.TAG_NAME, "body").get_attribute(attr))
|
|
)
|
|
|
|
|
|
def _open_form(driver):
|
|
_wait_for_body_attr(driver, "loaded-dashboard")
|
|
|
|
action = driver.find_element(
|
|
By.CSS_SELECTOR, '[title="Restart Docker Container"]'
|
|
)
|
|
action.click()
|
|
|
|
_wait_for_body_attr(driver, "loaded-argument-form")
|
|
|
|
driver.execute_script(
|
|
"""
|
|
const form = document.getElementById('argument-popup');
|
|
if (form) {
|
|
form.style.margin = '2rem auto';
|
|
form.style.maxWidth = '520px';
|
|
}
|
|
"""
|
|
)
|
|
|
|
|
|
def run(driver):
|
|
_open_form(driver)
|
|
|
|
driver.execute_script(
|
|
"""
|
|
const input = document.getElementById('container');
|
|
input.focus();
|
|
input.value = '';
|
|
|
|
document.getElementById('doc-suggestions-overlay')?.remove();
|
|
|
|
const rect = input.getBoundingClientRect();
|
|
const menu = document.createElement('div');
|
|
menu.id = 'doc-suggestions-overlay';
|
|
menu.style.position = 'fixed';
|
|
menu.style.left = `${rect.left}px`;
|
|
menu.style.top = `${rect.bottom + 2}px`;
|
|
menu.style.width = `${rect.width}px`;
|
|
menu.style.background = '#fff';
|
|
menu.style.border = '1px solid #ccc';
|
|
menu.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.15)';
|
|
menu.style.font = '13px sans-serif';
|
|
menu.style.zIndex = '9999';
|
|
|
|
for (const label of [
|
|
'Firewall Controller',
|
|
'graefik',
|
|
'grafana',
|
|
'plex',
|
|
'WiFi Controller',
|
|
]) {
|
|
const row = document.createElement('div');
|
|
row.textContent = label;
|
|
row.style.padding = '4px 8px';
|
|
menu.appendChild(row);
|
|
}
|
|
|
|
document.body.appendChild(menu);
|
|
"""
|
|
)
|
|
time.sleep(0.2)
|