Estoy tratando de simular hacer clic en un elemento que se representa después de una cierta iteración de document.readyState='complete'. Para solucionar el problema de readyState, pensé en intentar capturar el comando executeScript para que vuelva a intentarlo hasta que funcione.
Pero por alguna razón, Node/Selenium simplemente deja de funcionar por completo debido al error Js resultante:
No se pueden leer las propiedades de undefined (leyendo 'parentElement')
¿Alguna idea sobre cómo debería resolver esto? Aquí hay parte de mi código. Abrirá la URL proporcionada (elemento) y debería ejecutar el comando tan pronto como se procese la descarga del icono del elemento.
async function getFileFromUrl(item) { var command = "document.getElementsByClassName('icon-download')[0].parentElement.click()"; driver.get(item); do { await delay(500); try{ driver.executeScript(command); } catch (e) { continue; } break; } while (true); await delay(3000); }Ok, logré solucionarlo anteponiendo los comandos del controlador con Await. Si devuelven una excepción, Node la reconoce ahora. Código a continuación:
async function getFileFromUrl(item) { var command = "document.getElementsByClassName('icon-fpk icon-download-xls')[0].parentElement.click()"; await driver.get(item); do { await delay(500); try{ await driver.executeScript(command); } catch { continue; } break; } while (true); await delay(3500); }