49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
from selenium import webdriver
|
|
from selenium.common.exceptions import NoSuchElementException
|
|
from selenium.webdriver.common.by import By
|
|
from loguru import logger
|
|
from fake_useragent import UserAgent
|
|
from functools import cache
|
|
import time
|
|
|
|
|
|
class Clicker:
|
|
|
|
def __init__(self, headless: bool = True):
|
|
self.chrome_options = webdriver.ChromeOptions()
|
|
self.chrome_options.add_argument(f'user-agent={self._user_aget}')
|
|
self.chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
|
|
|
|
if headless:
|
|
self.chrome_options.add_argument('--mute-audio')
|
|
self.chrome_options.add_argument('--auto-open-devtools-for-tabs')
|
|
self.chrome_options.add_argument('--headless')
|
|
self.chrome_options.add_argument('--window-size=1440,900')
|
|
self.chrome_options.add_argument('--disable-gpu')
|
|
self.chrome_options.add_argument('--disable-dev-shm-usage')
|
|
self.chrome_options.add_argument("--log-level=3")
|
|
self.driver = webdriver.Chrome(
|
|
options=self.chrome_options
|
|
)
|
|
|
|
def click(self, auth_url: str):
|
|
self.driver.get(auth_url)
|
|
try:
|
|
element = self.driver.find_element(By.CSS_SELECTOR, '[data-uia="set-primary-location-action"]')
|
|
element.click()
|
|
except NoSuchElementException as e:
|
|
self.driver.save_screenshot(f'{time.time()}.png')
|
|
logger.error(e)
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, type, value, traceback):
|
|
self.driver.close()
|
|
|
|
@property
|
|
@cache
|
|
def _user_aget(self):
|
|
ua = UserAgent()
|
|
return ua.googlechrome
|