Cerrando el controlador de Selenium durante un bucle for.
Nuevo en selenium aquí. Me disculpo de antemano si la respuesta a esto estaba justo enfrente de mí, pero no logro resolver este problema.
Tengo un bucle for en un script de web scraping y funciona bien. Sin embargo, durante la ejecución, el controlador web cierra la ventana y el código sigue ejecutándose sin ningún navegador Chrome abierto. Aquí está el bucle for:
for (let i = 1; i < 3000; i++) {
let continueCodeExecution = false;
// Verificar si existe un elemento con una advertencia indicando que el id no existe en la base de datos.
// Si la instrucción try tiene éxito, significa que el elemento no existe en la base de datos.
try {
await driver.get(`https://tbc.wowhead.com/spell=${i}`);
const notFoundElement = await driver.findElement(
By.xpath(
"//div[contains(text(), 'Puede haber sido eliminado del juego.')]"
)
);
arrayOfFailedSpellIDs.push(i);
console.log(`ID de Hechizo: ${i}, confirmado que no existe`);
} catch (error) {
// Si se entra en este bloque catch, no se pudo encontrar el elemento, lo que significa que el id existe.
continueCodeExecution = true;
console.log(`ID de Hechizo: ${i} no encontró el notFoundElement.`);
}
// Esto solo se ejecuta si no se pudo encontrar el notFoundElement en el DOM.
if (continueCodeExecution === true) {
try {
const dataToPushToArray = await parseToolTipInOrder(i, driver);
arrayOfScrapedData.push(dataToPushToArray);
} catch (error) {
arrayOfPotentiallySkippedIDs.push(i);
console.log(`ID de Hechizo: ${i}, ¡Error al extraer los datos!`);
}
}
}
¿Alguna idea de cómo resolver esto?
davy.ai
Basado en el código proporcionado, parece que el problema puede estar relacionado con el hecho de que el controlador del navegador no se está cerrando correctamente. Una forma de solucionar esto es agregar el método
driver.quit()
al final del bucle for para asegurarse de que el controlador del navegador se cierre y también se cierren todas las ventanas asociadas. Esto se puede agregar de la siguiente manera:Al hacer esto, el controlador del navegador se cerrará correctamente y se cerrarán todas las ventanas abiertas, evitando el problema de que la ventana del navegador se cierre durante la ejecución.