I'm new to Python and Selenium and I want to click the button "Afficher plus" in this url.
i've tried this code :
plus = driver.find_element_by_css_selector("button[class='b-btn b-
ghost']")
plus.click()
but it doesn't work and i get this error:
selenium.common.exceptions.WebDriverException: Message: unknown error: Element ... is not clickable at point (390, 581). Other element would receive the click: ...
Element you are trying to click is not clickable, or might be overlapped.
Try to click specified element, by executing java script click function.
driver.execute_script("arguments[0].click();", element)
On another hand, your page might not yet be fully loaded, so element might not be clickable yet, you can use wait for condition:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable(By...)) //change selector
element.click();
To click the button with text as Afficher plus de biens within this url you have to induce WebDriverWait for the element to be clickable and you can use either of the following solutions:
Using CSS_SELECTOR
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.b-btn.b-ghost"))).click()
Using XPATH
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='b-btn b-ghost' and contains(., 'Afficher plus')]"))).click()
Note : You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC