You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium click()方法执行失败,添加time.sleep(1)后恢复正常求助

问题:Selenium click()操作失败,添加time.sleep(1)后恢复正常

首次尝试使用Selenium时,执行click()操作报错,但在click()前添加time.sleep(1)后即可正常运行。

原代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver.get("https://google.com")

googleSearchBox = driver.find_element(By.ID, "APjFqb")
googleSearchBox.send_keys("test")
# time.sleep(1)
driver.find_element(By.NAME, "btnK").click()

报错信息

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
  (Session info: chrome=115.0.5790.170)
Stacktrace:
0   chromedriver                        0x000000010049aa6c chromedriver + 4303468
1   chromedriver                        0x0000000100493198 chromedriver + 4272536
2   chromedriver                        0x00000001000c73ec chromedriver + 291820
3   chromedriver                        0x0000000100105f60 chromedriver + 548704
4   chromedriver                        0x00000001000fa958 chromedriver + 502104
5   chromedriver                        0x00000001000fa220 chromedriver + 500256
6   chromedriver                        0x000000010013d628 chromedriver + 775720
7   chromedriver                        0x00000001000f8b40 chromedriver + 494400
8   chromedriver                        0x00000001000f9988 chromedriver + 498056
9   chromedriver                        0x000000010045b924 chromedriver + 4045092
10  chromedriver                        0x000000010045fe68 chromedriver + 4062824
11  chromedriver                        0x0000000100466088 chromedriver + 4087944
12  chromedriver                        0x000000010046096c chromedriver + 4065644
13  chromedriver                        0x0000000100438e64 chromedriver + 3903076
14  chromedriver                        0x000000010047c55c chromedriver + 4179292
15  chromedriver                        0x000000010047c6b4 chromedriver + 4179636
16  chromedriver                        0x000000010048c978 chromedriver + 4245880
17  libsystem_pthread.dylib             0x00000001a523ffa8 _pthread_start + 148
18  libsystem_pthread.dylib             0x00000001a523ada0 thread_start + 8

原因解释

这个问题的核心是页面元素的交互时机不匹配:

  • 代码中在搜索框输入内容后立即执行click(),但此时Google页面的搜索按钮(btnK)还没完全准备好接受交互——可能按钮仍处于隐藏状态、页面还在执行后续的JS渲染或状态更新,导致Selenium判定元素不可交互。
  • time.sleep(1)是强制等待1秒,给了页面足够时间完成元素的加载和状态切换,等按钮真正变为可点击状态后,再执行click()就不会报错。

不过硬等待不是最优方案,更推荐使用Selenium的显式等待,它会自动等待元素满足可交互条件后再执行操作,既不用固定等待时长,也能适配不同的页面加载速度。优化后的代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver.get("https://google.com")

googleSearchBox = driver.find_element(By.ID, "APjFqb")
googleSearchBox.send_keys("test")

# 显式等待,最多等待10秒,直到搜索按钮可点击
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "btnK"))).click()

内容的提问来源于stack exchange,提问作者Yuchen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:45:00