-
Notifications
You must be signed in to change notification settings - Fork 0
/
base_web_selenium.py
80 lines (73 loc) · 3.05 KB
/
base_web_selenium.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import *
from time import sleep
from base_utils import checar_time
# Fonte de opções de switches https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_switches.cc e https://peter.sh/experiments/chromium-command-line-switches/
# Lista de opções experimentais(nem todas estão documentadas) https://chromium.googlesource.com/chromium/src/+/master/chrome/common/pref_names.cc
"""
--start-maximized # Inicia maximizado
--lang=pt-BR # Define o idioma de inicialização, # en-US , pt-BR
--incognito # Usar o modo anônimo
--window-size=800,800 # Define a resolução da janela em largura e altura
--headless # Roda em segundo plano(com a janela fechada)
--disable-notifications # Desabilita notificações
--disable-gpu # Desabilita renderização com GPU
"""
def iniciar_driver(window_size_x: int = 1300, window_size_y: int = 1000):
chrome_options = Options()
argumentos = [
"--lang=pt-BR",
f"--window-size={window_size_x},{window_size_y}",
"--incognito",
]
for argumento in argumentos:
chrome_options.add_argument(argumento)
chrome_options.add_experimental_option(
"prefs",
{
# Alterar o local padrão de download de arquivos
"download.default_directory": "C:\\Users\\augus\\Desktop\\Curso_automacao\\Selenium\\Como alterar como o navegador deve se portar\\downloads",
# notificar o google chrome sobre essa alteração
"download.directory_upgrade": True,
# Desabilitar a confirmação de download
"download.prompt_for_download": False,
# Desabilitar notificações
"profile.default_content_setting_values.notifications": 2,
# Permitir multiplos downloads
"profile.default_content_setting_values.automatic_downloads": 1,
},
)
driver = webdriver.Chrome(
service=ChromeService(ChromeDriverManager().install()), options=chrome_options
)
# https://selenium-python.readthedocs.io/api.html#module-selenium.common.exceptions
wait = WebDriverWait(
driver=driver,
timeout=20,
poll_frequency=10,
ignored_exceptions=[
NoSuchElementException,
ElementNotVisibleException,
ElementNotSelectableException,
],
)
return driver, wait
def input_driver_break(driver, time_break=False, timeout=100):
try:
if time_break is False:
input("Aperte qualquer tecla para fechar")
driver.close()
elif time_break is True:
print(
f"O Bot ficará repetindo as ações com intervalo de {checar_time(timeout)}"
)
sleep(timeout)
driver.close()
else:
driver.close()
except:
exit()