with what para how execute_script descargar bindings javascript python selenium javascript-injection

what - selenium python javascript click



Selenium: ¿Cómo inyectar/ejecutar un Javascript en una página antes de cargar/ejecutar cualquier otro script de la página? (3)

Estoy usando webdriver python de selenio para navegar por algunas páginas. Quiero inyectar un código javascript en una página antes de que se carguen y ejecuten otros códigos Javascript. Por otro lado, necesito que mi código JS se ejecute como el primer código JS de esa página. ¿Hay alguna manera de hacer eso por Selenium?

Lo busqué en Google por un par de horas, ¡pero no pude encontrar una respuesta adecuada!



Si desea inyectar algo en el html de una página antes de que sea analizado y ejecutado por el navegador, le sugiero que utilice un proxy como Mitmproxy .


Si no puede modificar el contenido de la página, puede usar un proxy o usar un script de contenido en una extensión instalada en su navegador. Al hacerlo dentro de selenio, escribiría un código que inyecta el script como uno de los elementos secundarios de un elemento existente, pero no podrá ejecutarlo antes de que se cargue la página (cuando vuelva la llamada get() su controlador get() .

String name = (String) ((JavascriptExecutor) driver).executeScript( "(function () { ... })();" ...

La documentación deja sin especificar el momento en que el código comenzaría a ejecutarse. Desearía que lo hiciera antes de que el DOM comience a cargarse, de modo que la garantía solo sea satisfactoria con la ruta del script de contenido de proxy o extensión.

Si puede instrumentar su página con un arnés mínimo, puede detectar la presencia de un parámetro de consulta de url especial y cargar contenido adicional, pero debe hacerlo utilizando un script en línea. Pseudocódigo

<html> <head> <script type="text/javascript"> (function () { if (location && location.href && location.href.indexOf("SELENIUM_TEST") >= 0) { var injectScript = document.createElement("script"); injectScript.setAttribute("type", "text/javascript"); //another option is to perform a synchronous XHR and inject via innerText. injectScript.setAttribute("src", URL_OF_EXTRA_SCRIPT); document.documentElement.appendChild(injectScript); //optional. cleaner to remove. it has already been loaded at this point. document.documentElement.removeChild(injectScript); } })(); </script> ...