rpa-suite 1.5.4__py3-none-any.whl → 1.5.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rpa_suite/__init__.py +2 -0
- rpa_suite/core/__init__.py +4 -0
- rpa_suite/core/browser.py +8 -8
- rpa_suite/functions/__init__.py +2 -0
- rpa_suite/utils/__init__.py +2 -0
- rpa_suite/utils/system.py +131 -25
- {rpa_suite-1.5.4.dist-info → rpa_suite-1.5.6.dist-info}/METADATA +4 -5
- {rpa_suite-1.5.4.dist-info → rpa_suite-1.5.6.dist-info}/RECORD +11 -11
- {rpa_suite-1.5.4.dist-info → rpa_suite-1.5.6.dist-info}/WHEEL +0 -0
- {rpa_suite-1.5.4.dist-info → rpa_suite-1.5.6.dist-info}/licenses/LICENSE +0 -0
- {rpa_suite-1.5.4.dist-info → rpa_suite-1.5.6.dist-info}/top_level.txt +0 -0
rpa_suite/__init__.py
CHANGED
rpa_suite/core/__init__.py
CHANGED
rpa_suite/core/browser.py
CHANGED
@@ -42,7 +42,7 @@ class Browser:
|
|
42
42
|
Finds a single element on the page using the specified locator strategy.
|
43
43
|
get(url: str, display_message: bool = False):
|
44
44
|
Navigates the browser to the specified URL.
|
45
|
-
|
45
|
+
_close_all_browsers():
|
46
46
|
Closes all Chrome processes forcefully.
|
47
47
|
close_browser(display_message: bool = False):
|
48
48
|
Closes the browser instance and terminates the associated Chrome processes.
|
@@ -74,7 +74,7 @@ class Browser:
|
|
74
74
|
Localiza um único elemento na página usando a estratégia de localização especificada.
|
75
75
|
get(url: str, display_message: bool = False):
|
76
76
|
Navega o navegador para a URL especificada.
|
77
|
-
|
77
|
+
_close_all_browsers():
|
78
78
|
Fecha todos os processos do Chrome de forma forçada.
|
79
79
|
close_browser(display_message: bool = False):
|
80
80
|
Fecha a instância do navegador e termina os processos associados do Chrome.
|
@@ -84,12 +84,12 @@ class Browser:
|
|
84
84
|
port: int = None
|
85
85
|
path_driver = None
|
86
86
|
|
87
|
-
def __init__(self, port: int = 9393,
|
87
|
+
def __init__(self, port: int = 9393, close_browser_on_this_port: bool = False):
|
88
88
|
self.port = port
|
89
89
|
self.path_driver = ChromeDriverManager().install()
|
90
90
|
|
91
|
-
if
|
92
|
-
self.
|
91
|
+
if close_browser_on_this_port:
|
92
|
+
self._close_all_browsers()
|
93
93
|
...
|
94
94
|
|
95
95
|
def configure_browser(self) -> None:
|
@@ -168,7 +168,7 @@ class Browser:
|
|
168
168
|
if response.status_code == 200:
|
169
169
|
break # O Chrome está aberto
|
170
170
|
except requests.ConnectionError:
|
171
|
-
sleep(
|
171
|
+
sleep(0.3) # Espera um segundo antes de tentar novamente
|
172
172
|
|
173
173
|
# Inicializa o Chrome com as opções
|
174
174
|
self.configure_browser()
|
@@ -199,7 +199,7 @@ class Browser:
|
|
199
199
|
"""
|
200
200
|
|
201
201
|
try:
|
202
|
-
sleep(
|
202
|
+
sleep(0.9)
|
203
203
|
element = WebDriverWait(self.driver, timeout).until(
|
204
204
|
EC.presence_of_element_located((by, value))
|
205
205
|
)
|
@@ -285,7 +285,7 @@ class Browser:
|
|
285
285
|
pass
|
286
286
|
|
287
287
|
# Aguarda um momento para o processo ser liberado
|
288
|
-
sleep(
|
288
|
+
sleep(0.6)
|
289
289
|
|
290
290
|
# Força o fechamento do processo específico do Chrome
|
291
291
|
os.system(
|
rpa_suite/functions/__init__.py
CHANGED
rpa_suite/utils/__init__.py
CHANGED
@@ -9,3 +9,5 @@ pt-br
|
|
9
9
|
O módulo de utilitários da rpa-suite fornece uma coleção de funções e classes utilitárias que facilitam diversas tarefas na automação de processos. Inclui métodos auxiliares para registro de log, manipulação de arquivos e outras operações comuns que aprimoram a funcionalidade e a usabilidade da RPA Suite.
|
10
10
|
|
11
11
|
"""
|
12
|
+
|
13
|
+
__version__ = '1.5.5'
|
rpa_suite/utils/system.py
CHANGED
@@ -4,41 +4,147 @@
|
|
4
4
|
from rpa_suite.functions._printer import error_print, success_print
|
5
5
|
|
6
6
|
# imports third-party
|
7
|
-
import sys, os
|
7
|
+
import sys, os, ctypes, traceback
|
8
8
|
|
9
9
|
|
10
|
-
|
10
|
+
class Utils:
|
11
11
|
"""
|
12
|
-
|
12
|
+
Classe utilitária para gerenciamento de configurações de sistema e diretórios.
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
Fornece métodos para manipulação de caminhos de importação e configurações do sistema.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def __init__(self):
|
18
|
+
"""
|
19
|
+
Inicializa a classe Utils.
|
20
|
+
|
21
|
+
Não requer parâmetros de inicialização específicos.
|
22
|
+
"""
|
23
|
+
try:
|
24
|
+
pass
|
25
|
+
except Exception as e:
|
26
|
+
error_print(f"Erro durante a inicialização da classe Utils: {str(e)}")
|
27
|
+
|
28
|
+
|
29
|
+
def set_importable_dir(self, display_message: bool = False) -> None:
|
30
|
+
"""
|
31
|
+
Configura o diretório atual como importável, adicionando-o ao caminho do sistema.
|
32
|
+
|
33
|
+
Adiciona o diretório pai do módulo atual ao sys.path, permitindo importações
|
34
|
+
dinâmicas de módulos locais.
|
17
35
|
|
18
|
-
|
19
|
-
|
36
|
+
Parâmetros:
|
37
|
+
----------
|
38
|
+
display_message : bool, opcional
|
39
|
+
Se True, exibe uma mensagem de sucesso após definir o diretório.
|
40
|
+
Por padrão é False.
|
41
|
+
|
42
|
+
Retorna:
|
43
|
+
--------
|
20
44
|
None
|
21
45
|
|
22
|
-
|
23
|
-
|
24
|
-
|
46
|
+
Exceções:
|
47
|
+
---------
|
48
|
+
Captura e registra quaisquer erros durante o processo de configuração.
|
49
|
+
"""
|
50
|
+
|
51
|
+
try:
|
52
|
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
53
|
+
|
54
|
+
if display_message:
|
55
|
+
success_print("Diretório configurado com sucesso para importação!")
|
56
|
+
|
57
|
+
except Exception as e:
|
58
|
+
error_print(
|
59
|
+
f"Erro ao configurar diretório importável: {str(e)}"
|
60
|
+
)
|
61
|
+
|
25
62
|
|
26
|
-
|
27
|
-
|
28
|
-
|
63
|
+
class KeepSessionActive:
|
64
|
+
"""
|
65
|
+
Gerenciador de contexto avançado para prevenir bloqueio de tela no Windows.
|
66
|
+
|
67
|
+
Utiliza chamadas de API do Windows para manter o sistema ativo durante
|
68
|
+
execução de tarefas críticas, impedindo suspensão ou bloqueio de tela.
|
69
|
+
|
70
|
+
Atributos de Classe:
|
71
|
+
-------------------
|
72
|
+
ES_CONTINUOUS : int
|
73
|
+
Flag para manter o estado de execução atual do sistema.
|
74
|
+
ES_SYSTEM_REQUIRED : int
|
75
|
+
Flag para prevenir a suspensão do sistema.
|
76
|
+
ES_DISPLAY_REQUIRED : int
|
77
|
+
Flag para manter o display ativo.
|
29
78
|
|
30
|
-
|
31
|
-
|
32
|
-
|
79
|
+
Exemplo de Uso:
|
80
|
+
--------------
|
81
|
+
with KeepSessionActive():
|
82
|
+
# Código que requer que o sistema permaneça ativo
|
83
|
+
realizar_tarefa_longa()
|
33
84
|
"""
|
34
85
|
|
35
|
-
|
36
|
-
|
86
|
+
def __init__(self) -> None:
|
87
|
+
"""
|
88
|
+
Inicializa as configurações de estado de execução do sistema.
|
89
|
+
|
90
|
+
Configura constantes específicas do Windows para controle de energia
|
91
|
+
e gerenciamento de estado do sistema operacional.
|
92
|
+
"""
|
93
|
+
try:
|
94
|
+
self.ES_CONTINUOUS = 0x80000000
|
95
|
+
self.ES_SYSTEM_REQUIRED = 0x00000001
|
96
|
+
self.ES_DISPLAY_REQUIRED = 0x00000002
|
97
|
+
except Exception as e:
|
98
|
+
error_print(f"Erro ao inicializar KeepSessionActive: {str(e)}")
|
99
|
+
|
100
|
+
|
101
|
+
def __enter__(self) -> None:
|
102
|
+
"""
|
103
|
+
Configura o estado de execução para prevenir bloqueio de tela.
|
104
|
+
|
105
|
+
Utiliza chamada de API do Windows para manter sistema e display ativos
|
106
|
+
durante a execução do bloco de código.
|
107
|
+
|
108
|
+
Retorna:
|
109
|
+
--------
|
110
|
+
KeepSessionActive
|
111
|
+
A própria instância do gerenciador de contexto.
|
112
|
+
|
113
|
+
Exceções:
|
114
|
+
---------
|
115
|
+
Captura e registra quaisquer erros durante a configuração de estado.
|
116
|
+
"""
|
117
|
+
try:
|
118
|
+
ctypes.windll.kernel32.SetThreadExecutionState(
|
119
|
+
self.ES_CONTINUOUS | self.ES_SYSTEM_REQUIRED | self.ES_DISPLAY_REQUIRED
|
120
|
+
)
|
121
|
+
return self
|
122
|
+
except Exception as e:
|
123
|
+
error_print(f"Erro ao configurar estado de execução: {str(e)}")
|
124
|
+
return self
|
125
|
+
|
126
|
+
|
127
|
+
def __exit__(self, exc_type, exc_val, exc_tb) -> None:
|
128
|
+
"""
|
129
|
+
Restaura as configurações padrão de energia do sistema.
|
130
|
+
|
131
|
+
Método chamado automaticamente ao sair do bloco de contexto,
|
132
|
+
revertendo as configurações de estado de execução para o padrão.
|
37
133
|
|
38
|
-
|
39
|
-
|
134
|
+
Parâmetros:
|
135
|
+
----------
|
136
|
+
exc_type : type, opcional
|
137
|
+
Tipo de exceção que pode ter ocorrido.
|
138
|
+
exc_val : Exception, opcional
|
139
|
+
Valor da exceção que pode ter ocorrido.
|
140
|
+
exc_tb : traceback, opcional
|
141
|
+
Traceback da exceção que pode ter ocorrido.
|
40
142
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
143
|
+
Exceções:
|
144
|
+
---------
|
145
|
+
Captura e registra quaisquer erros durante a restauração do estado.
|
146
|
+
"""
|
147
|
+
try:
|
148
|
+
ctypes.windll.kernel32.SetThreadExecutionState(self.ES_CONTINUOUS)
|
149
|
+
except Exception as e:
|
150
|
+
error_print(f"Erro ao restaurar estado de execução: {str(e)}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: rpa_suite
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.6
|
4
4
|
Summary: Conjunto de ferramentas essenciais para Automação RPA com Python, que facilitam o dia a dia de desenvolvimento.
|
5
5
|
Author: Camilo Costa de Carvalho
|
6
6
|
Author-email: camilo.carvalho@vettracode.com
|
@@ -58,11 +58,10 @@ Dynamic: summary
|
|
58
58
|
[](https://github.com/asweigart/pyautogui)
|
59
59
|
[](https://github.com/Delgan/loguru)
|
60
60
|
[](https://opensource.org/licenses/MIT)
|
61
|
-
[](https://apify.com/camiloccarvalho/rpasuite)
|
62
61
|
|
63
62
|
## O que é?
|
64
63
|
|
65
|
-
**RPA Suite:** um conjunto abrangente de ferramentas projetadas para simplificar e otimizar o desenvolvimento de projetos de automação RPA com Python. Embora nossa suíte seja um conjunto de Ferramentas de RPA especializado, sua versatilidade a torna igualmente útil para uma ampla gama de projetos de desenvolvimento. Esta desenvolvendo com Selenium
|
64
|
+
**RPA Suite:** um conjunto abrangente de ferramentas projetadas para simplificar e otimizar o desenvolvimento de projetos de automação RPA com Python. Embora nossa suíte seja um conjunto de Ferramentas de RPA especializado, sua versatilidade a torna igualmente útil para uma ampla gama de projetos de desenvolvimento. Esta desenvolvendo com Selenium ou Botcity? Experimente a RPA Suite e descubra como podemos facilitar seu projeto e qualquer projeto de Robôs de Software.
|
66
65
|
|
67
66
|
<br>
|
68
67
|
|
@@ -285,10 +284,10 @@ O módulo principal do rpa-suite é dividido em categorias. Cada categoria cont
|
|
285
284
|
|
286
285
|
## Release Notes
|
287
286
|
|
288
|
-
### Versão: **Beta 1.5.
|
287
|
+
### Versão: **Beta 1.5.6**
|
289
288
|
|
290
289
|
- **Data de Lançamento:** *20/02/2024*
|
291
|
-
- **Última Atualização:**
|
290
|
+
- **Última Atualização:** 27/05/2025
|
292
291
|
- **Status:** Em desenvolvimento
|
293
292
|
|
294
293
|
Esta versão marca um grande avanço no desenvolvimento da RPA Suite, trazendo melhorias significativas na arquitetura, novas funcionalidades e maior simplicidade no uso. Confira as principais mudanças abaixo.
|
@@ -1,8 +1,8 @@
|
|
1
|
-
rpa_suite/__init__.py,sha256=
|
1
|
+
rpa_suite/__init__.py,sha256=PGlr0Y0NLLH1sarD1VTv-Tvm_uZPmo1Ar4LLncvUVFU,2365
|
2
2
|
rpa_suite/suite.py,sha256=DGP3zOW705qnv8EfFcXg75JIWQwibeIJID5kcmbFSQg,10556
|
3
|
-
rpa_suite/core/__init__.py,sha256=
|
3
|
+
rpa_suite/core/__init__.py,sha256=clmYBLmsmFRXGMABUjIkV-dBe_OlviowszdIJEwS-yM,1748
|
4
4
|
rpa_suite/core/asyncrun.py,sha256=bE04H36V01LavLRzGMhaUDBrnwhwLLSqpzKRZjsHVnA,4195
|
5
|
-
rpa_suite/core/browser.py,sha256=
|
5
|
+
rpa_suite/core/browser.py,sha256=tew_SaTBVsWZHi66O41GOLMrdoR1XvgQmtoBMjGa9iE,15009
|
6
6
|
rpa_suite/core/clock.py,sha256=T8ilbWrmGwhRGBAVRCCvICWQ1_uu2VjDTJgNEljPYhY,13414
|
7
7
|
rpa_suite/core/date.py,sha256=42Nwvyx-FBBImEyVhBGksmIZ9VSwyFqhQPVeEwSpmtc,6310
|
8
8
|
rpa_suite/core/dir.py,sha256=sN9R-XGIrySAyUYIB3XVHzaZR5ZqcX2Ag-pKZ6G3jpY,10301
|
@@ -14,12 +14,12 @@ rpa_suite/core/print.py,sha256=T-O4zaYzfPLKn5tEzgNrWOqRV_p4hAzT-c1Y3JDla24,5825
|
|
14
14
|
rpa_suite/core/regex.py,sha256=76NjtLaIFM4LuTWLAOusQoOcP_Rub_G2ol9H6CIkTMg,3324
|
15
15
|
rpa_suite/core/validate.py,sha256=gOISOwjCza-18kfpaZnWCrKj4aIk2s7U4mStBDUAC7E,10857
|
16
16
|
rpa_suite/functions/__create_ss_dir.py,sha256=oAvZCMRgrBNUpaYGEiNlUFa1XiVYDfOqPb9M8ITxqG8,3482
|
17
|
-
rpa_suite/functions/__init__.py,sha256=
|
17
|
+
rpa_suite/functions/__init__.py,sha256=nXet0AfuyaazPrJUzfCgE382hONS3QqxDLydo75J6NU,57
|
18
18
|
rpa_suite/functions/_printer.py,sha256=gj7dwOt4roSj2iwOGWeGgUD3JVr7h4UESyCg9CmrieA,3946
|
19
|
-
rpa_suite/utils/__init__.py,sha256=
|
20
|
-
rpa_suite/utils/system.py,sha256=
|
21
|
-
rpa_suite-1.5.
|
22
|
-
rpa_suite-1.5.
|
23
|
-
rpa_suite-1.5.
|
24
|
-
rpa_suite-1.5.
|
25
|
-
rpa_suite-1.5.
|
19
|
+
rpa_suite/utils/__init__.py,sha256=Paz45Tn6mSyU0YcQLqvtBx4pOH1yoJVC1nlz4svtHTk,700
|
20
|
+
rpa_suite/utils/system.py,sha256=fAIFSiMpb2-Hk6tExSdAWdyecqhVbAprZcyG1y794DU,4936
|
21
|
+
rpa_suite-1.5.6.dist-info/licenses/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
|
22
|
+
rpa_suite-1.5.6.dist-info/METADATA,sha256=QOJHrCs1cfFZ_6M_1gdyFhUHyBFQc3g6qWTbSOW74OA,13938
|
23
|
+
rpa_suite-1.5.6.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
24
|
+
rpa_suite-1.5.6.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
|
25
|
+
rpa_suite-1.5.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|