Entiendo que se han hecho versiones de estas preguntas antes, esto puede ser una repetición, pero he buscado en todas ellas y no puedo encontrar una solución que funcione.
Estoy tratando de extraer algunos datos de air.norfolk.gov. La ventana emergente de descargo de responsabilidad al principio realmente me está dando problemas (¡Mi objetivo ahora mismo es simplemente deshacerme de la ventana emergente al principio para poder raspar los datos!).
Aquí está mi código actual:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from webdriver_manager.chrome import ChromeDriverManager import time driver = webdriver.Chrome(ChromeDriverManager().install()) driver.maximize_window() driver.get('https://air.norfolk.gov') time.sleep(5) element_name = driver.find_element(By.TAG_NAME, 'button') print("Element is visible? " + str(element_name.is_displayed())) driver.find_element(By.TAG_NAME, 'button').click() print('button clicked') time.sleep(5) # Get search box element from webElement 'q' using Find Element search_box = driver.find_element(By.ID, "primary_search") search_box.send_keys("this would be where the address goes") Intenté varias cosas que podrá notar: Intenté verificar si el elemento está visible, lo está. Intenté agregar esperas para asegurarme de que estaba listo para recibir mi clic. Intenté usar send_keys en lugar de click() porque parece que este botón está envuelto en un div .
Cada vez que ejecuto el script, miro el sitio web y el descargo de responsabilidad no ha desaparecido.
El error que estoy recibiendo es:
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button type="button" class="btn primary-button">...</button> is not clickable at point (912, 317). Other element would receive the click: <div class="modal-body">...</div>Simplemente no estoy seguro de por qué el elemento no puede recibir el clic.
¡Por favor ayuda!
Gracias
Hay 5 elementos que resaltan la etiqueta del button . Por lo tanto, encontrar el elemento con tag-name no funcionaría como se esperaba.
Intente con el siguiente xpath para hacer clic en I Understand .
//button[text()='I Understand']Prueba con el siguiente código:
#Imports required for Explicit waits: from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver.get("https://air.norfolk.gov") wait = WebDriverWait(driver,30) wait.until(EC.element_to_be_clickable((By.XPATH,"//button[text()='I Understand']"))).click()Encuentras el botón equivocado. Puede encontrarlo con la etiqueta CSS: #btn-primary .
Le sugiero que vaya a ese sitio web y abra DevTools y haga la prueba con javascript normal, lo resolverá rápidamente
Si la ventana emergente de descargo de responsabilidad es una alerta, se puede manejar de la siguiente manera:
driver.switchTo().alert().dismiss();O:
driver.switchTo().alert().accept(); También intente usar driver.getWindowHandles() para cambiar entre las ventanas y luego haga clic en el elemento.