Este marco utiliza la API WebDriver para comunicarse con los navegadores para la automatización.
Para hacerlo, se requiere que el WebDriver del navegador elegido esté instalado y disponible preferiblemente en tu PATH.
Si no puedes agregar el WebDriver necesario a tu PATH, podrás informar la ruta del driver a través de código en tu bot.
Aquí tienes una lista de navegadores compatibles junto con enlaces para descargar el WebDriver correspondiente:
Para proporcionar flexibilidad, tenemos propiedades que te permiten configurar qué navegador usar, la ubicación del WebDriver
así como las opciones utilizadas al iniciar el navegador.
Las siguientes secciones cubrirán las posibles personalizaciones en detalle.
La plantilla de proyecto de BotCity está configurada de forma predeterminada para ejecutarse con Google Chrome. Puedes seleccionar cualquier otro
navegador disponible estableciendo la propiedad browser en uno de los valores disponibles del enumBrowser.
Aquí tienes un ejemplo de cómo cambiar el navegador predeterminado que se utilizará:
# Import the Browser enumfrombotcity.webimportWebBot,Browserdefmain():# Instantiate the WebBot.bot=WebBot()# Configure whether or not to run on headless mode.bot.headless=False# Changes the Browser to Firefox.bot.browser=Browser.FIREFOX# For Chrome.# bot.browser = Browser.CHROME...
importdev.botcity.framework.bot.WebBot;// Import the Browser enumimportdev.botcity.framework.web.browsers.Browser;...publicvoidaction(BotExecutionbotExecution){try{// Configure whether or not to run on headless modesetHeadless(false);//Changes the Browser to FirefoxsetBrowser(Browser.FIREFOX);// For Chrome// setBrowser(Browser.CHROME);...
Del fragmento anterior, lo más importante es la parte browser en la que lo establecemos en uno de los valores
del enumBrowser, como se mencionó anteriormente.
Si tu WebDriver para el navegador seleccionado no está disponible en el PATH del sistema, puedes indicar la ubicación
a través de la propiedad driver path.
Aquí tienes cómo se puede hacer:
# Import the Browser enumfrombotcity.webimportWebBot,Browserdefmain():# Instantiate the WebBot.bot=WebBot()# Configure whether or not to run on headless mode.bot.headless=False# Inform the WebDriver path for Google Chrome's chromedriver.bot.driver_path="/home/username/drivers/chromedriver"...
importdev.botcity.framework.bot.WebBot;importdev.botcity.framework.web.browsers.Browser;...publicvoidaction(BotExecutionbotExecution){try{// Configure whether or not to run on headless modesetHeadless(false);// Inform the WebDriver path for Google Chrome's chromedriversetDriverPath("/home/username/drivers/chromedriver");...
Por defecto, los navegadores se inician con un conjunto de opciones seleccionadas que hemos considerado esenciales.
Antes de entrar en cómo personalizar esos detalles, repasemos algunas de las suposiciones y
detalles que están cubiertos por las opciones predeterminadas.
Ejecución en modo sin cabeza: Dependiendo de la propiedad headless establecida en tu clase Bot, seleccionamos la
configuración adecuada para iniciar el navegador en el modo deseado.
Ruta de la carpeta de descargas: Por defecto, guardamos todos los archivos descargados en la carpeta del desktop.
Perfil de usuario: Por defecto, generamos un directorio temporal (que se borra posteriormente) para ser utilizado
como directorio de perfil. Este procedimiento asegura que cada ejecución comience con una sesión de navegador limpia
y cosas como cookies y contraseñas almacenadas o certificados de una ejecución no interfieran con las demás.
Estrategia de carga de página: Por defecto, utilizamos la estrategia NORMAL, que espera a que la página se cargue por completo.
También se establecen algunas otras opciones que se pueden inspeccionar en el código fuente de cada navegador en el
módulo adecuado del marco.
Si realmente necesitas personalizar las opciones, puedes hacerlo a través de la propiedad options. Puedes obtener
las opciones predeterminadas seleccionadas por BotCity y realizar tus cambios o comenzar tus opciones desde cero.
En el siguiente fragmento, veremos cómo construir sobre las opciones existentes.
frombotcity.webimportWebBot,Browser,PageLoadStrategy# For Chromefrombotcity.web.browsers.chromeimportdefault_options# For Firefox#from botcity.web.browsers.firefox import default_optionsdefmain():# Instantiate the WebBot.bot=WebBot()# Configure whether or not to run on headless mode.bot.headless=False# Fetch the default options for my preferred browser# Pass in the headless, download_folder_path and user_data_dir# to be used when building the default_optionsdef_options=default_options(headless=bot.headless,download_folder_path=bot.download_folder_path,user_data_dir=None,# Informing None here will generate a temporary directorypage_load_strategy=PageLoadStrategy.NORMAL)# Add your customized argumentdef_options.add_argument("<My Special Argument>")# Update the options to use the customized Options.bot.options=def_options...
importdev.botcity.framework.bot.WebBot;importdev.botcity.framework.web.browsers.Browser;importdev.botcity.framework.web.browsers.PageLoadStrategy;// For Chromeimportdev.botcity.framework.web.browsers.ChromeConfig;// For Firefox// import dev.botcity.framework.web.browsers.FirefoxConfig;...publicvoidaction(BotExecutionbotExecution){try{// Configure whether or not to run on headless modesetHeadless(false);// Fetch the default options for my preferred browserChromeConfigchromeConfig=newChromeConfig();ChromeOptionsdefOptions=(ChromeOptions)chromeConfig.defaultOptions(isHeadless(),// Setting headless mode (using default)getDownloadPath(),// Setting the download folder path (using default)null,// Informing null here will generate a temporary directoryPageLoadStrategy.NORMAL// Setting the page load strategy);// Add your customized argumentdefOptions.addArguments("<My Special Argument>");// Update the options to use the customized Options.setOptions(defOptions);...
Cada navegador compatible tendrá un módulo exclusivo con opciones predeterminadas seleccionadas accesibles a través de la función
default options del módulo.
Esta función toma argumentos para definir el modo de ejecución (sin cabeza o no), la ruta predeterminada de la carpeta de descargas, el directorio de datos de usuario/perfil y
la estrategia de carga de página, como se describe anteriormente.
Es sencillo utilizar estos navegadores en tu código; la única dependencia es la ruta al ejecutable/binario del navegador. Con eso en mano, puedes utilizarlo de la siguiente manera.
Important
El siguiente ejemplo utiliza Brave, pero los pasos son los mismos para todos los demás navegadores.
frombotcity.webimportWebBot,Browserdefmain():# Instantiate the WebBot.bot=WebBot()# Configure whether or not to run on headless mode.bot.headless=False# Inform the WebDriver path for chromedriverbot.driver_path="/home/username/drivers/chromedriver"# Inform the Browser path for Brave.bot.binary_path="/usr/bin/brave-browser"