Ir para o conteúdo

Configuração

Nesta seção, você aprenderá como configurar a estrutura de uma automação Web.

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:

# 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"

    ...
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"