作者寄語:Don't worry, be happy!
[出現問題]
點擊頁面按鈕,出現錯誤element click intercepted
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x00000174F1F59520>
response = {'status': 400, 'value': '{"value":{"error":"element click intercepted","message":"element click intercepted: Element ...\n\\tRtlGetAppContainerNamedObjectPath [0x77757A4E+286]\\n\\tRtlGetAppContainerNamedObjectPath [0x77757A1E+238]\\n"}}'}
C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py:242: ElementClickInterceptedException
[錯誤原因]
由於selenium執行特別快,頁面加載過程需要一點時間,導致selenium執行時,可能找到了元素,但元素未加載完成而處於不可點擊狀態或者元素未加載完成而某些元素疊加到了此元素之上(疊加之上的元素不可點擊)
[解決方法]
使用time.sleep()將等待時間延長,待頁面加載完畢后再執行點擊操作
# 等待3s,launch才能加載完成
time.sleep(3)
# launch操作
# WebDriverWait:等待10s直到指定元素處於可點擊狀態,然后點擊該元素
WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.XPATH, '/html/body/div/div/div[3]/div/div/div[2]/div[1]/div[1]/div[3]/button'))).click()