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

如何通过Selenium Python向搜索框输入文本并解决点击搜索不跳转问题

问题原因及修复方案

现有代码的核心问题

  • 隐式等待使用错误:implicitly_wait()的参数单位是秒,你传入1000相当于设置全局等待超时为1000秒,且该配置应该在driver初始化后全局设置一次,不是点击搜索后才设置,无法解决点击后等待页面跳转的问题。
  • 未等待页面跳转就直接获取当前URL:点击搜索按钮后页面需要加载时间,你同步直接拿current_url拿到的还是跳转前的主页地址,自然匹配失败。
  • 搜索关键词和预期URL不匹配:你输入的搜索内容是samsung 20,但预期URL里的搜索词是samsung s20,多了字符s,就算跳转成功也会判定失败。
  • 缩进错误:你给出的代码中actualUrl2开始的部分缩进不对,会直接报语法错误。

修正后的代码

# 建议在driver初始化时就设置一次隐式等待,全局生效
self.driver.implicitly_wait(10)
# 操作搜索框
self.driver.find_element(By.CSS_SELECTOR, ".search-box").click()
# 输入的关键词要和预期URL里的对应,这里修正为samsung s20
self.driver.find_element(By.CSS_SELECTOR, ".search-box").send_keys("samsung s20")
self.driver.find_element(By.CSS_SELECTOR, ".search-icon").click()

# 显式等待页面URL发生变化,代替直接硬等
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 最长等待10秒,直到URL包含搜索路径的特征
WebDriverWait(self.driver, 10).until(EC.url_contains("/srq="))

actualUrl2 = "https://www.trendyol.com/srq=samsung%20s20&qt=samsung%20s20&st=samsung%20s20&os=1"
expected2 = self.driver.current_url
if actualUrl2 == expected2:
    print("Welcome")
else:
    print("Başarısız")
    print(expected2)

额外排查点

如果修改后还是停留在主页,按以下顺序排查:

  • 确认.search-icon的选择器是否正确,是否点击到了真实的搜索提交按钮,部分网站搜索框按回车键也可以提交,可以替换点击操作为输入完关键词后发送回车键:send_keys(Keys.ENTER),需要提前导入from selenium.webdriver.common.keys import Keys
  • 确认页面是否有弹窗、Cookie提示遮挡了搜索按钮,导致点击没有触发提交动作,可以先处理弹窗再执行搜索操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:36:03