es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo ejecutar pruebas una por una utilizando Selenium y Python en una pestaña?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdownSoy bastante nuevo en las pruebas automatizadas, así que no me golpees demasiado fuerte.

Entonces tengo 2 archivos separados con 2 pruebas diferentes:
1. Inicio de sesión exitoso
2. Creación de una solicitud

Puedo ejecutar con éxito el caso de inicio de sesión, pero no puedo ejecutar el segundo, ya que requiere estar conectado. ¿Hay alguna manera de ejecutar el primero (Usuario inicia sesión) y ejecutar el siguiente en la misma ventana del navegador sin cerrar esta ventana, para que la siguiente prueba sea como una continuación de la anterior?

Entonces, aquí hay una prueba para iniciar sesión

from selenium import webdriver

from pages.base_element import BaseElement
from pages.login_page import LoginPage

# Configuración de la prueba
browser = webdriver.Chrome()
currentURL = None

# Inicio de sesión exitoso
log_page = LoginPage(driver=browser)
log_page.go()   <-------------------------------------------Va a la página de inicio de sesión                  
log_page.user_name_field.input_text('mail@gmail.com')

log_page.password_field.input_text('Pass123')
log_page.login_button.click()

Y aquí está para crear una solicitud

from selenium import webdriver

from pages.base_element import BaseElement 
from pages.med_page import LoginPage 
from pages.med_page import MedPage

# Configuración de la prueba
browser = webdriver.Chrome() 
currentURL = None

# Prueba
med_page = MedPage(driver=browser) 
med_page.go()   <----------------- Debe redirigir a la página de solicitud, pero se redirige al inicio de sesión ya que es una nueva sesión del navegador, por lo que el usuario no ha iniciado sesión
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes lograr esto utilizando la misma sesión del navegador y las cookies para ambos tests. Puedes modificar tu código de la siguiente manera:

    1. Antes de ejecutar el primer test, crea una instancia de navegador utilizando el webdriver y guárdala en una variable global.
    2. Usa esta instancia global del navegador para ejecutar el primer test (Inicio de sesión exitoso). Después de que el inicio de sesión sea exitoso, el usuario será redirigido a la página del panel de control.

    3. En el mismo test, guarda la URL actual de la página del panel de control en una variable global.

    4. En el segundo test (Creación de una solicitud), usa la misma instancia global del navegador para navegar a la URL almacenada en la variable global (URL del panel de control). Esto asegurará que el usuario ya haya iniciado sesión.

    Aquí tienes un fragmento de código actualizado que demuestra este enfoque:

    from selenium import webdriver
    from pages.base_element import BaseElement
    from pages.login_page import LoginPage
    from pages.med_page import MedPage
    
    # Variables globales
    browser = None
    dashboard_url = None
    
    def setup_module():
        # Crear instancia del navegador
        global browser
        browser = webdriver.Chrome()
    
    def teardown_module():
        # Cerrar instancia del navegador
        global browser
        browser.quit()
    
    def test_successful_login():
        global browser
        global dashboard_url
    
        # Configuración del test
        log_page = LoginPage(driver=browser)
        log_page.go()
    
        # Inicio de sesión exitoso
        log_page.user_name_field.input_text('mail@gmail.com')
        log_page.password_field.input_text('Pass123')
        log_page.login_button.click()
    
        # Almacenar URL del panel de control
        dashboard_url = browser.current_url
    
    def test_creating_request():
        global browser
        global dashboard_url
    
        # Configuración del test
        med_page = MedPage(driver=browser)
    
        # Navegar a la URL del panel de control
        browser.get(dashboard_url)
    
        # Crear una solicitud
        med_page.go()
        # ... resto del código
    

    Nota: Asegúrate de modificar las funciones de configuración y cierre para configurar y cerrar la instancia del navegador según sea necesario en tu framework de test.

Comments are closed.