J'essaye de cliquer sur un bouton dans une étiquette de barre latérale:
<span class="sidebar-label">
Exportar Listagem
</span>
Voici mon code:
driver.get("https://ispot2.faturaiqos.pt")
html = driver.page_source
exp = driver.find_element_by_link_text("Exportar Listagem")
exp.click()
Voici l'erreur que j'obtiens:
Traceback (most recent call last):
File "/home/pi/Desktop/Python Testes/Ispot JP.py", line 25, in <module>
exp = driver.find_element_by_link_text("Exportar Listagem")
File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 317, in find_element_by_link_text
return self.find_element(by=By.LINK_TEXT, value=link_text)
File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 745, in find_element
{'using': by, 'value': value})['value']
File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"Exportar Listagem"}
(Session info: chrome=84.0.4147.141)
(Driver info: chromedriver=84.0.4147.141 (80c974bf7990b9735a8e885046fc5c9b1da4796c-refs/branch-heads/4147@{#1132}),platform=Linux 5.4.79-v7+ armv7l)
Pour cliquer sur l'élément avec le texte comme Exportar Listagem, vous pouvez utiliser les stratégies de localisation suivantes :
En utilisant xpath et contains()
:
driver.find_element_by_xpath("//span[@class='sidebar-label' and contains(., 'Exportar Listagem')]").click()
En utilisant xpath et normalize-space()
:
driver.find_element_by_xpath("//span[@class='sidebar-label' and normalize-space()='Exportar Listagem']").click()
Idéalement, pour cliquer sur l'élément dont vous avez besoin pour induire WebDriverWait pour le element_to_be_clickable()
et vous pouvez utiliser l'une des stratégies de localisation suivantes :
En utilisant xpath et contains()
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='sidebar-label' and contains(., 'Exportar Listagem')]"))).click()
En utilisant xpath et normalize-space()
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='sidebar-label' and normalize-space()='Exportar Listagem']"))).click()
Remarque : vous devez ajouter les importations suivantes:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots