问题
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: ...
回答1:
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();
回答2:
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
来源:https://stackoverflow.com/questions/55630235/how-to-click-the-button-using-selenium-python