Configuração¶
Nesta seção, você aprenderá como configurar a estrutura de uma automação Web.
Navegadores suportados¶
Esse Framework aproveita a API do WebDriver para se comunicar com os navegadores para automação.
Ao fazer isso, é necessário que o WebDriver do navegador escolhido seja instalado e disponível de preferência no seu PATH
.
Se você não puder adicionar o WebDriver necessário ao seu PATH
, poderá informar o driver_path
via código no seu bot.
Aqui está uma lista de navegadores suportados, além de links para você baixar o WebDriver adequado:
Browser | WebDriver Download |
---|---|
Chrome | ChromeDriver |
Firefox | GeckoDriver |
Edge | MSDriverEdge |
IE | IEDriverServer |
Siga as instruções no site da WebDriver para instalação e configuração.
Uma vez instalado o WebDriver desejado para o navegador a ser usado, podemos prosseguir para as próximas etapas.
Personalizando o navegador¶
Para fornecer flexibilidade, temos propriedades para permitir que você configure qual navegador usar, a localização do webdriver, bem como as opções usadas ao iniciar o navegador.
As seções a seguir cobrirão as possíveis personalizações em detalhes.
Selecionando o navegador¶
O template de projeto da BotCity por padrão vem configurado para executar com o Google Chrome
. Você pode selecionar qualquer outro
navegador disponível configurando a propriedade browser
para um dos valores do enum Browser
disponíveis.
Aqui está um exemplo de como alterar o navegador padrão a ser usado:
# Importe o enum Browser
from botcity.web import WebBot, Browser
def main():
# Instacia o WebBot.
bot = WebBot()
# Configure se deseja ou não executar no modo headless.
bot.headless = False
# Muda o navegador para o Firefox.
bot.browser = Browser.FIREFOX
# Para o Chrome.
# bot.browser = Browser.CHROME
...
import dev.botcity.framework.bot.WebBot;
// Importar o enum Browser
import dev.botcity.framework.web.browsers.Browser;
...
public void action(BotExecution botExecution) {
try {
// Configure se deve ou não executar no modo headless
setHeadless(false);
// Altera o navegador para o Firefox
setBrowser(Browser.FIREFOX);
// Alterar para o Chrome
// setBrowser(Browser.CHROME);
...
Do trecho de código acima, a principal conclusão é a utilização do Browser
, na qual o definimos para um dos valores do enum da classe Browser
como mencionado anteriormente.
Definindo o caminho do WebDriver¶
Se o seu WebDriver para o navegador selecionado não estiver disponível no PATH
do sistema, você pode informar o local
através da propriedade driver path
.
Aqui está como isso pode ser feito:
import dev.botcity.framework.bot.WebBot;
import dev.botcity.framework.web.browsers.Browser;
...
public void action(BotExecution botExecution) {
try {
// Configure se deve ou não executar no modo headless
setHeadless(false);
// Informe o caminho do WebDriver para o chromedriver do Google Chrome
setDriverPath("/home/username/drivers/chromedriver");
...
Personalizando as opções do navegador¶
Por padrão, os navegadores são lançados com um conjunto de opções selecionadas que escolhemos como essenciais.
Antes de entrar em como personalizar esses detalhes, vamos passar por algumas das suposições e detalhes cobertos pelo default options
.
-
Execução em modo Headless: Dependendo da propriedade
headless
definida na sua classe de Bot, escolhemos a configuração adequada para iniciar o navegador no modo desejado. -
Caminho da pasta de downloads: Por padrão, salvamos todos os arquivos baixados na pasta da área de trabalho.
-
Perfil de usuário: Por padrão, geramos um diretório temporário (que posteriormente é apagado) para ser usado como diretório de perfil. Este procedimento garante que toda execução comece com uma sessão limpa do navegador. Informações como cookies, senhas e certificados armazenados de uma execução não interferem em outras execuções.
-
Estratégia de carregamento de página: Por padrão, usamos a estratégia
NORMAL
, que aguarda a página carregar completamente.
Varias outras opções também são definidas e elas podem ser inspecionadas no código-fonte de cada navegador no módulo do framework apropriado.
Se você realmente precisar personalizar as opções, pode fazê-lo através da propriedade options
. Você pode buscar
o default options
com curadoria pela Botcity e fazer suas alterações ou iniciar suas opções do zero.
No trecho de código a seguir, abordaremos como customizar as opções existentes.
from botcity.web import WebBot, Browser, PageLoadStrategy
# Para Chrome
from botcity.web.browsers.chrome import default_options
# Para Firefox
#from botcity.web.browsers.firefox import default_options
def main():
# Instacia o WebBot
bot = WebBot()
# Configure se deseja ou não executar no modo headless.
bot.headless = False
# Busque as opções padrão para meu navegador preferido
# Passe os parâmetros headless, download_folder_path e user_data_dir
# a ser usado ao criar as default_options
def_options = default_options(
headless=bot.headless,
download_folder_path=bot.download_folder_path,
user_data_dir=None, # Informar 'None' aqui irá gerar um diretório temporário
page_load_strategy=PageLoadStrategy.NORMAL
)
# Adicione seu argumento personalizado
def_options.add_argument("<Meu argumento especial>")
# Atualize as opções para usar as opções personalizadas.
bot.options = def_options
...
import dev.botcity.framework.bot.WebBot;
import dev.botcity.framework.web.browsers.Browser;
import dev.botcity.framework.web.browsers.PageLoadStrategy;
// Para Chrome
import dev.botcity.framework.web.browsers.ChromeConfig;
// Para Firefox
// import dev.botcity.framework.web.browsers.FirefoxConfig;
...
public void action(BotExecution botExecution) {
try {
// Configure se deve ou não executar no modo headless
setHeadless(false);
// Busque as opções padrão para meu navegador preferido
ChromeConfig chromeConfig = new ChromeConfig();
ChromeOptions defOptions = (ChromeOptions) chromeConfig.defaultOptions(
isHeadless(), // Definindo o modo headless (usando o padrão)
getDownloadPath(), // Definindo o caminho da pasta de download (usando o padrão)
null, // Informar 'null' aqui irá gerar um diretório temporário
PageLoadStrategy.NORMAL // Definindo a estratégia de carregamento da página
);
// Adicione seu argumento personalizado
defOptions.addArguments("<Meu argumento especial>");
// Atualize as opções para usar as opções personalizadas.
setOptions(defOptions);
...
Cada navegador suportado terá um módulo exclusivo com opções padrão selecionadas que são acessíveis por meio das funções do módulo default options
.
Esta função recebe argumentos para definir o modo de execução (headless ou não), o caminho padrão da pasta de download, o diretório de dados/perfil do usuário e a estratégia de carregamento da página conforme descrito acima.
Usando outros navegadores¶
É possível usar outros navegadores que tenham como base o Firefox ou o Chromium, ou até mesmo versões fixas do Chrome, Firefox ou Edge.
Navegadores com base no Chromium:
Navegadores com base no Firefox:
É muito simples de implementar o uso desses navegadores no seu código. A única dependência é saber o caminho do binário/executável, com isso em mãos é só usar da seguinte forma:
Importante
Esse exemplo é usando o Brave, mas o mesmo vale para qualquer outro navegador.
# Importe o enum Browser
from botcity.web import WebBot, Browser
def main():
# Instacia o WebBot
bot = WebBot()
# Configure se deseja ou não executar no modo headless.
bot.headless = False
# Defina o caminho do WebDriver
bot.driver_path = "/home/username/drivers/chromedriver"
# Informe o caminho do binário ou executável do Brave.
bot.binary_path = "/usr/bin/brave-browser"