Spaces:
Build error
Build error
| from selenium import webdriver | |
| import os | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.support.ui import WebDriverWait | |
| from selenium.webdriver.support import expected_conditions as EC | |
| from selenium.webdriver.common.keys import Keys | |
| from selenium.common.exceptions import TimeoutException | |
| from modules import g_config | |
| import undetected_chromedriver as uc | |
| class Browser: | |
| def __init__(self): | |
| self.type_browser = g_config.BROWSER | |
| self.driver = None | |
| class FireFoxBrowser(Browser): | |
| def __init__(self, dir_profile="", proxy=""): | |
| super().__init__() | |
| self.proxy = proxy | |
| self.dir_profile = dir_profile | |
| def init_driver(self, disable_js=True): | |
| from selenium.webdriver.firefox.options import Options | |
| options = Options() | |
| # options.add_argument('--headless') | |
| options.add_argument('--no-sandbox') | |
| options.add_argument('--disable-dev-shm-usage') | |
| options.add_argument("--disable-infobars") | |
| options.add_argument("--disable-web-security") | |
| options.add_argument("--allow-running-insecure-content") | |
| # options.add_argument("start-maximized") | |
| options.add_argument("--disable-extensions") | |
| path_driver = g_config.PATH_BROWSER_FIREFOX | |
| path_driver = path_driver.replace("\\", "/") | |
| # Disable Javascript | |
| if disable_js: | |
| options.preferences.update({ | |
| "javascript.enabled": False, | |
| }) | |
| if len(self.dir_profile) == 0: | |
| self.dir_profile = None | |
| profile = webdriver.FirefoxProfile(self.dir_profile) | |
| if len(self.proxy) > 0: | |
| proxy_host, proxy_port = self.proxy.split(":") | |
| profile.set_preference("network.proxy.socks", str(proxy_host)) | |
| profile.set_preference("network.proxy.socks_port", int(proxy_port)) | |
| profile.set_preference("network.proxy.type", 1) | |
| # if disable_js: | |
| # profile.set_preference('javascript.enabled', False) | |
| profile.update_preferences() | |
| driver = webdriver.Firefox(executable_path=path_driver, options=options, firefox_profile=profile) | |
| driver.implicitly_wait(10) | |
| driver.set_page_load_timeout(30) | |
| self.driver = driver | |
| def save_data_browser(self): | |
| temp_dir = self.driver.capabilities.get("moz:profile") | |
| os.system("cp -R " + temp_dir + "/* " + self.dir_profile) | |
| def get_driver(self): | |
| return self.driver | |
| def click_to_element(self, selector): | |
| try: | |
| element = WebDriverWait(self.driver, 10).until( | |
| EC.presence_of_element_located((By.CSS_SELECTOR, selector)) | |
| ) | |
| element.click() | |
| except: | |
| pass | |
| def send_key_to_element(self, selector, text): | |
| try: | |
| element = WebDriverWait(self.driver, 10).until( | |
| EC.presence_of_element_located((By.CSS_SELECTOR, selector)) | |
| ) | |
| element.send_keys(text) | |
| except TimeoutException: | |
| return False | |
| return True | |
| def send_key_enter(self): | |
| action = webdriver.ActionChains(self.driver) | |
| action.send_keys(Keys.ENTER) | |
| action.perform() | |
| def stop(self): | |
| # self.driver.close() | |
| if self.driver is not None: | |
| self.driver.quit() | |
| class ChromeUndetectedBrowser(Browser): | |
| def __init__(self, dir_profile="", proxy=""): | |
| super().__init__() | |
| self.proxy = proxy | |
| self.dir_profile = dir_profile | |
| def init_driver(self, disable_js=True): | |
| firefox_options = webdriver.FirefoxOptions() | |
| driver = webdriver.Remote( | |
| command_executor='http://host.docker.internal:4444', | |
| options=firefox_options | |
| ) | |
| driver.implicitly_wait(10) | |
| driver.set_page_load_timeout(30) | |
| self.driver = driver | |
| # | |
| # if len(self.dir_profile) == 0: | |
| # self.dir_profile = None | |
| # | |
| # o = uc.ChromeOptions() | |
| # | |
| # if config.HEADLESS: | |
| # o.headless = True | |
| # | |
| # driver = uc.Chrome(options=o) | |
| # | |
| # driver.implicitly_wait(10) | |
| # driver.set_page_load_timeout(30) | |
| # | |
| # self.driver = driver | |
| def get_driver(self): | |
| return self.driver | |
| def click_to_element(self, selector): | |
| try: | |
| element = WebDriverWait(self.driver, 10).until( | |
| EC.presence_of_element_located((By.CSS_SELECTOR, selector)) | |
| ) | |
| element.click() | |
| except: | |
| pass | |
| def send_key_to_element(self, selector, text): | |
| try: | |
| element = WebDriverWait(self.driver, 10).until( | |
| EC.presence_of_element_located((By.CSS_SELECTOR, selector)) | |
| ) | |
| element.send_keys(text) | |
| except TimeoutException: | |
| return False | |
| return True | |
| def send_key_enter(self): | |
| action = webdriver.ActionChains(self.driver) | |
| action.send_keys(Keys.ENTER) | |
| action.perform() | |
| def stop(self): | |
| # self.driver.close() | |
| if self.driver is not None: | |
| self.driver.quit() | |