Estoy tratando de configurar algunos casos de prueba con Selenium en Javascript para una prueba de página de inicio de sesión simple. Estoy en el punto en el que estoy tratando de configurar la detección de errores adecuada al rechazar dentro de una Promesa. Aquí está mi código de promesa:
//Test Case 1: Valid Email / Valid Password async function tc1() { announceTC(); //Create promise to handle execution of async test case let promise = new Promise(async function (resolve, reject) { //Create the webdriver (Chrome) and open an instance of the test page const driver = createDriver(); //Enter valid email / valid password await validEmail(driver, reject); await validPassword(driver); //Click login button await clickLoginButton(driver); //Test for a successful login await testSuccessfulLogin(driver, resolve, reject); //Exit the driver instance. await driver.quit(); //Trigger the callback functions promise .then(value => console.log(value), value => console.log(value)) .catch(value => console.log(value)) .finally(() => tc2()); }); };Dentro de mi función validEmail, estoy tratando de rechazar si ocurre un error. Aquí está mi código para esa función:
//Find and enter valid email on login page async function validEmail(driver, reject) { try{ //Click email input box. let emailBox = await driver.wait(until.elementLocated(By.xpath("//*[@id='email']/iput")), 5000); await emailBox.click(); //Input email. driver.findElement(By.xpath("//*[@id='email']/input")).sendKeys("redacted@gmail.com"); } catch(error) { console.log(error); reject(tcErrorMsg()); } }Mi comprensión de este error es que ocurre cuando no proporciona una captura en la promesa de manejar un caso rechazado.
Mi función testSuccessfulLogin usa resolve y la promesa se ejecuta a través de .then correctamente, por lo que no estoy seguro de por qué recibo un error de rechazo no controlado cuando uso el rechazo de la misma manera.
el siguiente código debe moverse fuera de la función asíncrona
//Trigger the callback functions promise .then(value => console.log(value), value => console.log(value)) .catch(value => console.log(value)) .finally(() => tc2());