| |
| from selenium import webdriver |
|
|
| import gradio as gr |
| import uuid |
| import re |
| from PIL import Image |
| from io import BytesIO |
| from selenium.common.exceptions import WebDriverException |
| from selenium.webdriver.common.keys import Keys |
| from selenium.webdriver.common.by import By |
| |
|
|
| driver_type = 'chromedriver' |
| driver=False |
| def run_script(url: str, height: int, width: int): |
| uid=uuid.uuid4() |
| is_url=True |
| if is_url: |
| options = webdriver.ChromeOptions() |
| options.add_argument('--headless') |
| options.add_argument('--no-sandbox') |
| options.add_argument('--disable-dev-shm-usage') |
|
|
| try: |
| driver = webdriver.Chrome(options=options) |
| driver.get(url) |
| |
| driver.implicitly_wait(30) |
| driver.set_window_size(int(width), int(height)) |
| obj = driver.find_element(By.CLASS_NAME, "main") |
| |
| |
| |
| |
| |
| ''' |
| find_element(By.ID, "id") |
| find_element(By.NAME, "name") |
| find_element(By.XPATH, "xpath") |
| find_element(By.LINK_TEXT, "link text") |
| find_element(By.PARTIAL_LINK_TEXT, "partial link text") |
| find_element(By.TAG_NAME, "tag name") |
| find_element(By.CLASS_NAME, "class name") |
| find_element(By.CSS_SELECTOR, "css selector") |
| ''' |
| |
| |
| cookie_jar = [] |
| |
| |
| screenshot = obj.screenshot(f'{uid}-tmp.png') |
| |
| except WebDriverException as e: |
| return [Image.new('RGB', (1, 1)), f'<center>{e}'] |
| finally: |
| if driver: |
| driver.quit() |
|
|
| |
| return [Image.open(f'{uid}-tmp.png'), '<center>operation success.'] |
| else: |
| return [None, '<center>Please enter a valid URL of a website/host.'] |
|
|
| with gr.Blocks() as app: |
| |
| with gr.Row(): |
| with gr.Column(): |
| inp = gr.Textbox(label="URL",lines=1) |
| btn= gr.Button() |
| |
| with gr.Column(): |
| with gr.Row(): |
| height=gr.Number(label="Height", value=4096) |
| width=gr.Number(label="Width",value=800) |
| message=gr.HTML('<center>Enter URL') |
| outim = gr.Image() |
| btn.click(run_script,[inp,height,width],[outim,message]) |
| app.launch() |