【问题标题】:Python/Splinter + Selenium error: Element is not clickable at point (657, 724) [duplicate]Python / Splinter + Selenium错误:元素在点(657、724)处不可点击[重复]
【发布时间】:2017-11-03 23:45:11
【问题描述】:

https://store.obeygiant.com/collections/prints/products/obey-ripped-signed-offset-poster 尝试网络抓取时,尝试按 id 甚至按名称单击按钮:

browser.find_by_id('AddToCartText').click()
browser.find_by_name('add').click()

但每次尝试都出现以下错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (657, 724)
  (Session info: chrome=61.0.3163.100)
  (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.11.6 x86_64)

以相同的方式对其进行了测试,其他网站也确实有效。

可能是什么问题,什么是解决问题的好方法?

提前谢谢你,一定会投票并接受答案。

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping splinter


    【解决方案1】:

    这可能发生在 get() 元素无法立即用于 click() 的情况下,因此为避免此类问题,您可以使用 webdriver wait 来检查元素是否存在且可点击,之后您可以执行 click()或任何相应的操作。

    您可以使用 webdriverwait refer

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome("C:\\temp\\chromedriver.exe")
    url = r"https://store.obeygiant.com/collections/prints/products/obey-ripped-signed-offset-poster"
    
    driver.get(url)
    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "AddToCartText"))) # to check presence of element
    element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'AddToCartText'))) # to check if element is clickable or not
    element.click() # after that  performs click()
    
    driver.close()
    

    同样适用于其他元素,唯一的变化是定位器。

    【讨论】:

    • 感谢您的回复!在我投票并接受答案之前,试一试但收到以下错误:AttributeError: 'WebDriver' object has no attribute 'find_element' for EC.presence_of_element_located((By.ID, "AddToCartText")))。你真的在网站上试过了吗?
    • 签到看看你是否有机会看看。提前谢谢!
    • @LyManeug 我测试了上面对我有用的代码(windows OS)
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多