How to click the button using selenium python

2019-08-15 20:17发布

问题:

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