2017-11-03 156 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操作系統) –