Non riesco a ottenere il selenio per fare clic sul pulsante

Aug 16 2020

Pic dell'elemento inspect del sito Web Più in profondità pic My Code snippet

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()

Quindi ottengo questo quando provo a eseguirlo, qualsiasi aiuto sarebbe apprezzato

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="Excel"]"}

Risposte

2 DebanjanB Aug 17 2020 at 05:39

L'elemento desiderato è un elemento angolare , quindi per fare clic sull'elemento devi indurre WebDriverAttendi e element_to_be_clickable()puoi utilizzare una delle seguenti strategie di localizzazione :

  • 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 : è necessario aggiungere le seguenti importazioni:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
1 hams222 Aug 16 2020 at 13:42

driver.find_element_by_name('Excel') seleziona un tag con name='Excel'.

Ad esempio, troverebbe un tag come questo:

<div name='Excel'>Hello</div>.

L'equivalente CSS per find_element_by_name è [name="Excel"].

Dall'immagine dell'elemento inspect del tuo sito web, sembra che tu stia cercando di trovare un elemento con il testo "Excel" all'interno del div, quindi devi utilizzare la seguente funzione:

driver.find_element_by_link_text('Excel')

Spero che abbia aiutato!

Per ulteriori informazioni sul webdriver Python Selenium, utilizzare questo collegamento . Mi ha aiutato molto!