Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

241
Vistas
Python Selenium encontrar elemento javascript

en pagina

https://www.virustotal.com/gui/home/upload

necesito hacer clic en "Elegir archivo" pero tengo Mensaje: error de javascript: el argumento no está definido

 var1 = sys.argv[1] path = os.path.abspath(var1) driver.get("https://www.virustotal.com/gui/home/upload") element = driver.execute_script('return document.querySelector("#view-container > home-view").shadowRoot.querySelector("#uploadForm").shadowRoot.querySelector("#infoIcon").shadowRoot.querySelector("#wrapperLink")') driver.execute_script('argument[0].click();', element)

Cómo definir este elemento. Me gustaría enviar un archivo para verificar usando el script

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay algo que funciona.

 element = driver.execute_script('return document.querySelector("#view-container > home-view").shadowRoot.querySelector("#uploadForm").shadowRoot') file_element = element.find_element(By.CSS_SELECTOR, "#fileSelector") file_element.send_keys(r"your_file_path/filename.extn")

Envía el archivo desde el backend sin hacer clic en el botón y abrir el cuadro de diálogo del archivo.

Código alternativo:

 def open_shadow_root(element): shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) return shadow_root driver.get("https://www.virustotal.com/gui/home/upload") time.sleep(5) root_1 = driver.find_element(By.CSS_SELECTOR, "#view-container > home-view") sroot_1 = open_shadow_root(root_1) print(sroot_1) time.sleep(4) root_2 = sroot_1.find_element(By.CSS_SELECTOR, "#uploadForm") sroot_2 = open_shadow_root(root_2) time.sleep(4) file_element = sroot_2.find_element(By.CSS_SELECTOR, "#fileSelector") file_element.send_keys(r"your_file_path/filename.extn") time.sleep(4) driver.quit()

Hace el mismo trabajo que el código anterior; es solo que he escrito una función de raíz de sombra y la utilizo para abrir las raíces de sombra. Esto parece un poco más legible en mi opinión, pero no se puede evitar usar el código anterior. Además, he usado time.sleep() que se puede reemplazar con WebdriverWait si es posible.

Si aún desea hacer clic en el botón Choose File y trabajar en el cuadro de diálogo del archivo, puede intentar lo siguiente:

 element = driver.execute_script('return document.querySelector("#view-container > home-view").shadowRoot.querySelector("#uploadForm").shadowRoot') choose_file = element.find_element(By.CSS_SELECTOR, "#infoIcon") choose_file.click()

Alterno:

 def open_shadow_root(element): shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) return shadow_root driver.get("https://www.virustotal.com/gui/home/upload") time.sleep(4) root_1 = driver.find_element(By.CSS_SELECTOR, "#view-container > home-view") sroot_1 = open_shadow_root(root_1) print(sroot_1) time.sleep(4) root_2 = sroot_1.find_element(By.CSS_SELECTOR, "#uploadForm") sroot_2 = open_shadow_root(root_2) time.sleep(4) choose_file = sroot_2.find_element(By.CSS_SELECTOR, "#infoIcon") choose_file.click() # ... choose the file .... driver.quit()
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda