Biblioteca com funções personalizadas desenvolvidos para Almaviva Do Brasil
Project description
Almaviva | Biblioteca Python
Biblioteca Python Almaviva com funções personalizadas para uso geral (pip install almaviva)
Executando o programa
-
Para usar esta biblioteca, basta instalar via PIP e posteriormente realizar a importação para dentro do código-fonte do seu projeto.
pip install almaviva
-
Para instalar a biblioteca na versão anteriormente publicada, acrescente "==1.1.0" na frente do nome do pacote que está instalando, ex.:
pip install almaviva==1.4.7
-
Para instalar a biblioteca do repositório de testes do PyPI, execute:
pip install -i https://test.pypi.org/simple/ almaviva
Ambiente virtual
-
Para criar a máquina virtual, caso não tenha sido criado a pasta
.venv
por parte do download do template python (tutorial acima), vá até a pasta que contém os arquivos deste projeto e execute, no PowerShell:python -m venv .venv --clear; .venv/scripts/activate;
-
Para que os passos acima sejam executados com sucesso, será necessário revisar a política de execução do scripts do PowerShell (no modo de administrador). Então, execute, no PowerShell:
Get-ExecutionPolicy -List
-
Caso
Scope ExecutionPolicy
no itemLocalMachine
esteja diferente deRemotesigned
, execute, no PowerShell:Set-ExecutionPolicy -ExecutionPolicy Remotesigned -Scope LocalMachine
Modo de operação do módulo: Database
Importação da biblioteca
Realize a importação para dentro do código-fonte do seu projeto
from almaviva.database import Database
Manipulando banco de dados
-
Crie a conexão com o servidor e informe o nome do banco de dados principal
Configurando a conexão usando autenticação windows (trusted connection):
server = '__servidor__' # Ex.: r'servidor1\instancia1' database = '__banco__' # Ex.: 'Assets' db = Database ( server , database ) db.connect()
Configurando a conexão usando autenticação de usuário:
server = '__servidor__' # Ex.: r'servidor1\instancia1' database = '__banco__' # Ex.: 'Assets' username = '__usuario__' # Ex.: 'User1' password = '__senha__' # Ex.: 'Senha1' db = Database ( server , database , username , password ) db.connect ()
Opcionamente podemos configurar a versão do
driver
que está instalado no sistema operacional, adicionando a configuração abaixo. Por padrão, se não informandodriver=None
é utilizadoODBC Driver 13 for SQL Server
driver='ODBC Driver 13 for SQL Server' db.set_driver (driver)
A opção de logging/debug no terminal pode ser ativado simplesmente acrescentando a condição abaixo no seu código:
Por padrão, esta condição é desabilitada
db.set_debugging ( activated=True )
-
Exemplos dos métodos SQL para manipulação de dados
-
SELECT:
query = '__select * from [...]__' resultado = db.select (query)
-
INSERT:
query = '__insert [...] (__campos__) values [...] ou select [...]__' db.insert (query)
-
DELETE:
query = '__delete [...] from [...]__' db.delete (query)
-
UPDATE:
query = '__update [...] set [...]__' db.update (query)
-
STORED PROCEDURE:
params = '__parametro1__', '__parametro2__' procedure = '[__banco__].[__schema__].[__procedure__]' db.execute_sp ( stored_procedure=procedure , param=(params) )
-
Modo de operação do módulo: File
Importação da biblioteca
Realize a importação para dentro do código-fonte do seu projeto
from almaviva.file import Files
Manipulando pastas e arquivos via Python
-
Primeiro crie uma instancia do objeto, executando um dos seguintes códigos abaixo:
Podemos iniciar a instância informando um caminho ao qual os arquivos serão manipulados por esta função:
folder = Files ( tempfolder=r'C:\_automacao\' )
Ou, quando não for informado o caminho da pasta que está querendo mapear, o código criará uma pasta com nome randômico nas pastas temporárias do sistema operacioal
%tmp%
folder = Files ( tempfolder=None ) print ( folder.get_folder_path() )
Posteriormente podemos configurar outro caminho de pasta, nesta mesma instância, executando:
folder.set_folder_path ( tempfolder='__outra pasta__' )
-
Procurar e/ou listar arquivos do diretório
Lista todos os arquivos do diretório mapeado de uma determinada instância é fácil, basta executar o código abaixo:
folder.list_files()
Mas, se quiser localizar uma pasta ou arquivo específico podemos usar:
Aqui podemos usar caracteres coringas para localizar parte do nome do arquivo ou pasta
folder.search_path_or_file ( name_or_pattern_to_search='*' )
-
Excluir os arquivos da pasta
Podemos executar o código abaixo para excluir TODOS os arquivos e pastas que existirem na pasta mapeada em uma determinada instância
folder.delete_all_files()
Também temos a possibilidade de excluir um arquivo específico, executando:
folder.delete_file ( file_name='__arquivo1.xlsb__' )
-
Mover arquivos de um diretório para outro
Se quiser mover todos os arquivos de um diretorio, basta executar:
Aqui recomenda-se usar a função
to_folder=folder2.get_folder_path()
de outra instância para evitar exceções na execução do códigofolder.move_all_files ( to_folder='__nova pasta__' )
Mover um arquivo específico de um diretório para outro:
Aqui recomenda-se usar a função
file_name=folder.search_path_or_file('__arquivo1__.xls*')[0]
da mesma instância e também o exemploto_folder=folder2.get_folder_path()
de outra instância para evitar exceções na execução do códigofolder.move_file ( file_name='__arquivo1.xlsb__' , to_folder='__nova pasta__' )
-
Copiar arquivos de um diretório para outro
Se quiser copiar todos os arquivos de um diretorio, basta executar:
Aqui recomenda-se usar a função
to_folder=folder2.get_folder_path()
de outra instância para evitar exceções na execução do códigofolder.copy_all_files ( to_folder='__nova pasta__' )
Copiar um arquivo específico de um diretório para outro:
Aqui recomenda-se usar a função
file_name=folder.search_path_or_file('__arquivo1__.xls*')[0]
da mesma instância e também o exemploto_folder=folder2.get_folder_path()
de outra instância para evitar exceções na execução do códigofolder.copy_file ( file_name='__arquivo1.xlsb__' , to_folder='__nova pasta__' )
Modo de operação do módulo: IHM
Importação da biblioteca
Realize a importação para dentro do código-fonte do seu projeto:
from almaviva.ihm import HUNames
Para obter o nome da máquina e o usuário atualmente conectado
-
Primeiro crie uma instancia do objeto, executando:
huname = HUNames()
-
Para saber o usuário atualmente conectado
username
, execute:print ( huname.get_username() )
-
Para saber o nome da máquina
hostname
, execute:print ( huname.get_hostname() )
-
Para saber a versão do Python instalado no sistema, execute:
print ( huname.get_app() )
Modo de operação do módulo: LOGGING
Importação da biblioteca
Realize a importação para dentro do código-fonte do seu projeto
from almaviva.logging import Logging
Registrando eventos de log
-
Crie uma instancia do objeto antes de iniciar os registros, executando:
log = Logging()
-
Para registrar um evento de log no nível de segurança
INFO
, basta executar:log.info ( description='__primeiro log__' , step='__etapa1__' # Step é opcional , complete=__True_or_False__ # Complete é opcional )
O argumento
complete
pode ser informado comTrue
ouFalse
, porém se não informado, o sistema sempre registrará o status comoOK
-
Para registrar um evento de log no nível de segurança
WARN
, basta executar:log.warn ( description='__segundo log__' , step='__etapa1__' # Step é opcional , complete=__True_or_False__ # Complete é opcional )
O argumento
complete
pode ser informado comTrue
ouFalse
, porém se não informado, o sistema sempre registrará o status comoOK
-
Para registrar um evento de log no nível de segurança
ERROR
, basta executar:log.error ( description='__terceiro log__' , step='__etapa1__' # Step é opcional )
O status desta função sempre retornará como
OK
, porém com a sinalizaçãoERROR
. -
Opções avançadas:
A opção
logging_in_db
foi substituída na versão 1.2.1 paralogging_in_server
carregando o registro de log em texto para o servidor de processamento de log do NOC Centrallog.set_options ( # Configurações padrão logging_in_file=True , debug_in_terminal=False , logging_in_server=False )
Por padrão o sistema cria um arquivo de log na mesma pasta em que a aplicação está executando, para desativar isto, desabilite a opção:
logging_in_file=False
Podemos exibir todos os registros de logs de
INFO
atéERROR
no terminal. Para fazer isto, habilite a seguinte opção:debug_in_terminal=True
Todo registro de atividade da aplicação pode ser enviada para o servidor de processamento de log central localizado no NOC Central por padrão. Para fazer isto, habilite a opção:
logging_in_server=True
Modo de operação do módulo: WEBDRIVER
Importação da biblioteca
Realize a importação para dentro do código-fonte do seu projeto
from almaviva.webdriver import WebDriverChrome
from selenium.webdriver.common.by import By
Executando o Google Chrome no modo automatizado
Aviso Importante! Para usar esta biblioteca, é necessário a instalação do Navegador Chrome e Chrome Driver
-
Inicialização do WebDriver com perfil para permitir restaurar ultima sessão
driver = WebDriverChrome ( profile_location=r'profiles\profile1' # profile_location: Parâmetro opcional , executable_path=r'drivers\chromedriver.exe' )
-
Opções adicionais de configuração das preferências do navegador:
download_dir = r'download_folder\' # Importante encerrar com 2 barras no final preferences = { "profile.default_content_settings.popups": 0 , "download.default_directory": str(download_dir) , "download.prompt_for_download": False , "directory_upgrade": True } driver.add_experimental_option (prefs=preferences) # Adicionar preferencias personalizadas.
-
Opções adicionais avançadas que podem ser configurados no navegador:
driver.set_options (new_argument='--disable-dev-shm-usage') # Opção para desabilitar recursos de desenvolvedor - economiza custo da memória driver.set_options (new_argument='--disable-gpu') # Opção para economizar processamento de vídeo driver.set_options (new_argument='--no-sandbox') # Opção para teste de versões Beta da aplicação driver.set_options (new_argument='--start-maximized') # Opção para maximizar a janela no start do browser driver.set_options (new_argument='--window-size=960,1080') # Opção para modificar largura x altura em pixel no start do browser driver.set_options (new_argument='--headless') # Opção para não rendenizar a janela do Google Chrome
-
Agora basta inicializar o navegador e obter os objeto de localização e controle dos elementos da página passando a função instanciada
driver.set_browser(url)
previamente configurado:browser=driver.set_browser ( url=r'https://portaldocolaborador.almavivadobrasil.com.br' )
-
Use comandos, como no exemplo abaixo para localizar os elementos e controlar a página web, para mais informaçoes busque as palavras
selenium browser find_elements
na web.| BY_CHOISES
-- | ------------------------ 1 |
By.ID
2 |By.XPATH
3 |By.LINK_TEXT
4 |By.PARTIAL_LINK_TEXT
5 |By.NAME
6 |By.TAG_NAME
7 |By.CLASS_NAME
8 |By.CSS_SELECTOR
browser.find_element ( by=By.XPATH, value='__x_path__' )
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.