• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

113
Vistas
Cómo implementar condiciones esperadas con llamadas Javascript en Selenium

Mi código Python Selenium a continuación descarga un archivo de forma de Río de Janeiro.

 import time, os from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select options = webdriver.ChromeOptions() preferences= {"download.default_directory": os.getcwd(), "directory_upgrade": True} options.add_experimental_option("prefs", preferences) #options.headless = True options.add_experimental_option('excludeSwitches', ['enable-logging']) url = "https://www.data.rio/datasets/limite-bairro/explore?location=-22.900784%2C-43.509500%2C10.83" # Path of my WebDriver driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) wait = WebDriverWait(driver, 10) # to maximize the browser window driver.maximize_window() #get method to launch the URL driver.get(url) wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#ember104"))).click() time.sleep(10) driver.execute_script('document.querySelector("#ember50 > div > div > div:nth-child(1) > div.download-panel > div > div:nth-child(8) > hub-download-card").shadowRoot.querySelector("calcite-card > div > calcite-dropdown > calcite-button").click()') time.sleep(10) driver.execute_script('document.querySelector("#ember50 > div > div > div:nth-child(1) > div.download-panel > div > div:nth-child(8) > hub-download-card").shadowRoot.querySelector("calcite-card > div > calcite-dropdown > calcite-dropdown-group > calcite-dropdown-item:nth-child(1)").click()')

Mientras funciona, quiero saber cómo usar esta sintaxis dentro del marco de las condiciones esperadas, es decir, en lugar de tener que decirle a Selenium que duerma durante diez segundos, ¿cómo usaría

 wait.until()

con Javascript, por lo que no necesito establecer explícitamente el tiempo de espera de diez segundos; después de todo, ¿qué sucede si tomó menos de diez segundos? ¿Alguna idea de cómo podría hacer esto?

over 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede pasar el elemento web devuelto a través de execute_script() como un argumento para las condiciones esperadas de element_to_be_clickable() e invocar el clic de la siguiente manera:

 wait = WebDriverWait(driver, 10) wait.until(EC.element_to_be_clickable(driver.execute_script("return document.querySelector("#ember50 > div > div > div:nth-child(1) > div.download-panel > div > div:nth-child(8) > hub-download-card").shadowRoot.querySelector("calcite-card > div > calcite-dropdown > calcite-button")"))).click()
over 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda