Automatización basada en la nube usando Selenium en Python y BrowserStack

Selenium es una biblioteca que permite la automatización de navegadores web. Es más popularmente utilizado para probar aplicaciones web. En el corazón de Selenium se encuentra Selenium WebDriver . WebDriver utiliza API de automatización del navegador para controlar el navegador y ejecutar pruebas. Esto significaría que el navegador funcionaría de la misma manera que cuando lo usa un usuario real. Puede usar estas funciones para automatizar la mayoría de sus cosas aburridas en línea, por ejemplo, postularse para múltiples trabajos en LinkedIn y AngelList .

Este artículo trata sobre el uso de Selenium (Python) para automatizar un proceso de llenado de formularios, es decir, completar un formulario varias veces. Después de eso, damos un paso más allá, usando BrowserStack para llevar este proceso de automatización a la nube. BrowserStack es una plataforma de prueba móvil y web en la nube que permite a los desarrolladores acceder a navegadores bajo demanda para sus necesidades de prueba.

La automatización y las pruebas basadas en la nube tienen varios beneficios. Ofrece una mejor colaboración, pruebas más rápidas y rentables, disponibilidad ilimitada y algunas ventajas importantes como la personalización, la paralelización y la compatibilidad con flujos de trabajo ágiles.

Para este artículo, utilizaremos un formulario de Google de muestra.

El primer paso y el más obvio sería instalar Selenium en su sistema usando el siguiente comando en su terminal:

sudo pip3 install selenium

El siguiente paso sería crear una cuenta de BrowserStack (si ya tiene una, entonces eso es genial). El plan móvil automatizado de BrowserStack para 1 paralelo y 1 usuario durante 1 año es gratuito para los estudiantes a través del paquete de desarrollo para estudiantes de Github .

Luego, deberá dirigirse a esta página en el sitio web de BrowserStack. Aquí puede seleccionar la combinación de navegador y sistema operativo de su preferencia. Una vez que haya seleccionado su preferencia, deberá crear un nuevo archivo .py en su sistema en un editor de código. Digamos que desea realizar mi prueba en el navegador Chrome 84 en Mac OS X Catalina . Por lo tanto, debe escribir el siguiente código en su archivo .py:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
  
desired_cap = {
 'browser': 'Chrome',
 'browser_version': '84.0 beta',
 'os': 'OS X',
 'os_version': 'Catalina',
 'resolution': '1024x768',
 'name': 'Bstack-[Python] Sample Test'
}
  
driver = webdriver.Remote(
    command_executor ='Your unique BrowserStack Access Key link',
    desired_capabilities = desired_cap)

 
Las primeras cuatro líneas del código especifican las bibliotecas importadas. La biblioteca de tiempo se utilizará más adelante en el proyecto. El diccionario de mayúsculas deseado especifica las especificaciones del sistema operativo y el navegador que se utilizará. La siguiente instrucción ( webdriver.Remote() ) conecta el programa al sistema de BrowserStack. La string única que se pasará al parámetro command_executor se encontrará en esta página cuando seleccione su preferencia de navegador y sistema operativo. La clave de acceso es única para cada usuario de BrowserStack y también lo es el enlace. 

Después de esto, debe agregar el siguiente código python a su archivo .py.

driver.get('https://forms.gle/zX5NEumdXW4Z7SrC6')

La instrucción driver.get() abrirá el enlace provisto en el navegador. La captura de pantalla del formulario se adjunta a continuación.

El formulario de muestra utilizado para este artículo.

Ahora su próximo paso sería seleccionar las opciones correctas para cada una de las preguntas/campos. Hay varias formas de hacer esto, pero supongamos que usa XPath para seleccionar la opción deseada. Para esto, debe pasar el cursor sobre la opción de su elección y presionar el botón derecho del mouse sobre el botón de opción/casilla de verificación. Entonces tendría que seleccionar la opción de inspección . Cuando haga clic derecho en el elemento resaltado dentro del nuevo panel a la derecha, podrá copiar el XPath, como se muestra en la imagen a continuación.

Copiando XPath

Esto funciona para campos de opción múltiple, texto y casillas de verificación. Ahora puede pegar el XPath en el archivo .py en forma de string como se muestra a continuación. También necesitaría la XPath del botón Enviar y el botón Enviar otra respuesta (volver a enviar). El botón de reenvío facilita la automatización.

radioOption3 ='//*[@id ="mG61Hd"]/div[2]/div / div[2]/div[1]/div / div / div[2]/div[1]/div / span / div / div[3]/label / div / div[1]/div / div[3]'
checkBox2 = '//*[@id ="mG61Hd"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div[1]/div[2]/label/div/div[1]/div[2]'
checkBox3 = '//*[@id ="mG61Hd"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div[1]/div[3]/label/div/div[1]/div[2]'
text = '//*[@id ="mG61Hd"]/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div[1]/div/div[1]/input'
submit = '//*[@id ="mG61Hd"]/div[2]/div/div[3]/div[1]/div/div/span/span'
  
resubmit = '/html / body / div[1]/div[2]/div[1]/div / div[4]/a'

Ahora, le queda el paso final, implementar el bucle para la automatización. Digamos que desea completar el formulario 100 veces. Así que ejecuta un ciclo while 100 veces, incrementando la variable i cada vez. Dentro del ciclo while usas el atributo find_element_by_xpath y click() para implementar tu funcionalidad. Para el campo de texto, el método send_keys hace el trabajo. time.sleep (1) espera 1 segundo después de enviar el formulario para evitar cualquier error no deseado. El siguiente código usa try y exceptpara el mismo propósito (como medida de precaución). Si no hay ningún error, la herramienta enviará otra respuesta en la misma ventana. Si se genera un error, cerrará esa ventana y comenzará con una nueva. La instrucción driver.quit() al final detiene/completa el proceso de automatización. 

i = 0
while i<100:
    driver.find_element_by_xpath(radioOption3).click()
    driver.find_element_by_xpath(checkBox2).click()
    driver.find_element_by_xpath(checkBox3).click()
    text_box = driver.find_element_by_xpath(text)
    text_box.send_keys("The text I need")
    driver.find_element_by_xpath(submit).click()
    i = i + 1
    time.sleep(1)
    try:
        driver.find_element_by_xpath(resubmit).click()
    except:
        driver.close()
        driver = webdriver.Remote(command_executor ='Your unique BrowserStack link', desired_capabilities = desired_cap)
        driver.get('https://forms.gle / xX5NEumdXW4Z7SrC6')
driver.quit()

Ahora todo lo que necesita hacer es ir a su terminal y usar el siguiente comando para ejecutar el programa.

python3 filename.py

Ahora puede pasar a su panel de control de BrowserStack y ver cómo su programa llena el formulario 100 veces.

Selenium es una poderosa herramienta que se puede utilizar para varios propósitos. El código es fácil de implementar y facilita mucho las pruebas y la automatización. BrowserStack proporciona una potente interfaz fácil de usar que facilita mucho las pruebas basadas en la nube.

Publicación traducida automáticamente

Artículo escrito por singhsuryansh12 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *