tqhoa's picture
test
063b4bb
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()