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.

Pasando argumentos de tipo string a TestCafe Selector en el modelo de página

Tengo un problema similar a este enlace, creo que en ese enlace los chicos están usando archivos de TypeScript. Yo he definido selectores en archivos de JavaScript, he intentado hacerlo de esta manera:

class Page {
   constructor(sampleText){
       this.optionsButton = Selector('#options').withText(sampleText);
   }
}
export default new Page();

pero cuando intento llamar al selector desde el archivo de prueba:

test('sampleTest', async t=> {
    await t.click(Page.optionsButton('sometext'));
)}

obtengo un error:

No se pueden preparar las pruebas debido al siguiente error: El argumento “texto” (undefined) no es del tipo esperado (cadena de texto o una expresión regular).

¿Cómo puedo solucionar este problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema en este caso es que se espera una cadena de texto o una expresión regular como argumento para el método withText, pero en el fragmento de código se está pasando como parámetro al selector optionsButton, lo cual no es la forma correcta de hacerlo.

    Para pasar el sampleText al selector definido en la clase Page, puedes modificar el código de la siguiente manera:

    class Page {
       constructor(){
           this.optionsButton = (sampleText) => Selector('#options').withText(sampleText);
       }
    }
    export default new Page();
    

    Aquí, estamos definiendo optionsButton como un método que toma sampleText como parámetro y devuelve el selector con el texto especificado.

    Luego, en el archivo de prueba, puedes llamar al método y pasar el texto de la siguiente manera:

    test('sampleTest', async t => {
        await t.click(Page.optionsButton('sometext'));
    )}
    

    Esto debería solucionar el problema y permitirte pasar el texto al selector en la clase Page.

Comments are closed.