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.

¿Por qué mi función de “espera” no funciona en Capybara? Recibo un error de “no es un string o una proc”.

Cuando agrego una función de espera a una instrucción expect(page).to_have_content, obtengo el siguiente error:
ADVERTENCIA: ignorando el argumento de mensaje de expectativa proporcionado ({:wait=>20}) ya que no es una cadena ni un procedimiento.
Para referencia, así es como se ve mi declaración de espera:

Cuando 'cambio el idioma' hago
expect(page).to have_content 'Texto Principal', wait: 10
first('div[data-testid="SelectLanguage"]').click
first('li[data-testid="SelectLanguage__Select__es"]').click
end

¡Gracias de antemano!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el argumento wait proporcionado no es una cadena de texto ni una función. La opción wait no es una opción incorporada para el comparador have_content, por lo que se ignora cuando se pasa como opción.

    Para agregar una función de espera a una declaración have_content usando Capybara, puedes utilizar el método wait_until. El método wait_until toma un bloque de código y esperará hasta que el bloque devuelva true o se alcance el tiempo de espera predeterminado de Capybara.

    Aquí tienes un ejemplo de cómo puedes utilizar wait_until con have_content:

    Cuando 'cambio el idioma' do
      wait_until { page.has_content?('Texto Principal') }
      first('div[data-testid="SelectLanguage"]').click
      first('li[data-testid="SelectLanguage__Select__es"]').click
    end
    

    En este ejemplo, el método wait_until espera hasta que la página contenga el texto “Texto Principal” antes de continuar con los siguientes pasos de la prueba.

Comments are closed.