在尝试在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)
以相同的方式对其进行了测试,其他网站实际上可以工作。
可能是什么问题,什么是解决它的好方法?
提前感谢您,一定会投票并接受答案。
这可能发生在 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()
同样适用于其他元素,只有更改将是定位器。