2017-11-03 158 views
1

当试验网在https://store.obeygiant.com/collections/prints/products/obey-ripped-signed-offset-poster刮,做出了尝试通过ID,甚至名称点击一个按钮:的Python /斯普林特+硒错误:元素不是在点点击(657,724)

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) 

测试它出来的方式和其他网站实际工作。

可能是什么问题,什么是一个很好的方法呢?

预先感谢您,一定会投票并接受答案。

回答

0

这可能发生在get()元素没有立即可用于点击()的地方,所以为了避免这种问题,您可以使用webdriver等待它可以检查元素是否存在并且可点击或不可以之后您可以执行点击)或任何相应的操作。您可以使用webdriverwaitrefer

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

相同的是适用于其他元素只有改变将是定位器。

+0

欣赏响应!在我尝试并接受答案之前,尝试了一下,但得到了以下错误:'AttributeError:'WebDriver'对象没有用于'EC.presence_of_element_located((By.ID,“AddToCartText”)))的'find_element' 。你真的尝试过与网站? –

+0

检查是否有机会看看。先谢谢你! –

+0

@LyManeug我测试了上面的代码,它为我工作(Windows操作系统) –