Automatizo el escenario donde necesito verificar que después de hacer clic en el botón, la alerta del navegador sea visible para el usuario y contenga el texto correcto. Por lo general, estoy trabajando con Google Chrome y mis soluciones funcionan para Chrome, apuesto cuando quería probar el escenario en Firefox, la consola arroja un error TypeError: browser.isAlertOpen is not a function , después de buscar en Google, descubrí que isAlertOpen solo funciona en Navegador Chrome, pero no puedo encontrar nada para Firefox. ¿Hay alguna solución para hacerlo que funcione para ambos navegadores? Mi código ahora mismo
Steps.js Then(/^I verify that alert is visible with text $/, async () => { await browser.waitUntil(() => browser.isAlertOpen()); const msg = await browser.getAlertText(); expect(msg).toEqual('Text on alert'); });Si eso es verdad. Porque el método isAlertOpen es un comando de Chromium no oficial y no documentado. Además, no existe un método similar para Firefox. Sin embargo, puede crear una función para verificar si la alerta está presente o no.
function isAlertPresent() { return async function() { try { await this.getAlertText(); return true; } catch (error) { if (error.name === 'no such alert') { return false; } else { throw error; } } }; }Esta es una función simple que devuelve otra función que intenta obtener un texto de alerta y, si tiene éxito, devolverá verdadero, si no hay una alerta presente, devolverá falso.
Luego puede agregarlo a su paso o prueba:
Then(/^I verify that alert is visible with text $/, async () => { // ↓ call function await browser.waitUntil(isAlertPresent()); const msg = await browser.getAlertText(); expect(msg).toEqual('Text on alert'); }); Además, puede considerar agregar la función isAlertPresent como un comando personalizado. Lea más aquí .