Construyo algo que puede ejecutar en una consola de navegador que busca enlaces en el sitio y devuelve una serie de enlaces. Después de eso, quiero revisar cada enlace, abrir la página de enlaces y buscar todas las etiquetas y obtener la fuente.
Las páginas tienen el mismo dominio y solo la parte al final es diferente. Pero cuando intento ejecutar mi código, abre la primera ventana. Devuelve undefined y cierra la ventana. Después de eso, aparece este error: VM79:32 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getVideoSources') at <anonymous>:32:51
La parte donde obtengo los enlaces funciona perfectamente y devuelve una lista de enlaces. Ahora la parte que me causa problemas es donde trato de abrir cada enlace.
async function grabLinks(links) { const videoList = []; for (const link of links) { console.log("New link!") // Go trough each link and get the video sources const sources = await getVideoSources(link); videoList.push(...sources); } console.log(videoList); showLinks(videoList) } function getVideoSources(link) { return new Promise((resolve, reject) => { console.log("Opening Window"); const openedWindow = window.open(link, "_blank"); openedWindow.focus(); openedWindow.addEventListener("DOMContentLoaded", () => { try { const videoElements = openedWindow.document.querySelectorAll("div video"); var source = videoElements[0].getVideoSources; console.log(source) resolve(source); } catch (e) { reject(e); } finally { openedWindow.close(); console.log("Closing Window"); } }); }); }¿Cómo haría para solucionar este problema? ¿Debo agregar un tiempo de espera de 5 segundos y dejar que la página se cargue por completo o qué es exactamente lo que sale mal aquí?