No se puede hacer que el selenio haga clic en el botón
Imagen del elemento de inspección del sitio web Imagen más detallada Fragmento de mi código
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import requests
///
excel = driver.find_element_by_name('Excel')
excel.click()
Luego obtengo esto cuando intento ejecutarlo, cualquier ayuda sería apreciada
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="Excel"]"}
Respuestas
El elemento deseado es un elemento angular , por lo que para hacer clic en el elemento debe inducir a WebDriverWait yelement_to_be_clickable()
puede usar cualquiera de las siguientes estrategias de localización :
usando
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[mat-button] > span.mat-button-wrapper span"))).click()
usando
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mat-button]/span[@class='mat-button-wrapper']//span[text()='Excel']"))).click()
Nota : debe agregar las siguientes importaciones:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
driver.find_element_by_name('Excel') selecciona una etiqueta con name='Excel'.
Por ejemplo, encontraría una etiqueta como esta:
<div name='Excel'>Hello</div>.
El equivalente de CSS para find_element_by_name es [name="Excel"].
De la imagen del elemento de inspección de su sitio web, parece que está tratando de encontrar un elemento con el texto 'Excel' dentro del div, por lo que en su lugar, debe usar la siguiente función:
driver.find_element_by_link_text('Excel')
¡Espero que haya ayudado!
Para obtener más información sobre Python Selenium webdriver, use este enlace . ¡Me ayudó mucho!