如何使用 selenium 单击按钮 python

How to click the button using selenium python

我是 Python 和 Selenium 的新手,我想单击 this url 中的按钮 "Afficher plus"。

我试过这段代码:

plus = driver.find_element_by_css_selector("button[class='b-btn b- 
ghost']")
plus.click()

但它不起作用,我收到此错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element ... is not clickable at point (390, 581). Other element would receive the click: ...

您尝试点击的元素不可点击,或者可能重叠。

通过执行java脚本点击功能尝试点击指定元素。

driver.execute_script("arguments[0].click();", element)

另一方面,您的页面可能还没有完全加载,所以元素可能还不能点击,您可以使用等待条件:

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

要在此 url 中单击文本为 Afficher plus de biens 的按钮,您必须为 WebDriverWait 元素可点击,您可以使用以下任一解决方案:

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.b-btn.b-ghost"))).click()
    
  • 使用XPATH:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='b-btn b-ghost' and contains(., 'Afficher plus')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC