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

Selenium点击谷歌首个链接失败+executable_path弃用问题修复求助

问题修复方案

1. 解决executable_path弃用警告

Selenium 4.x 已经弃用了直接通过webdriver.Chrome()传入驱动路径的写法,需要改用ChromeService类来管理驱动文件:

  • 新增导入from selenium.webdriver.chrome.service import Service
  • 用Service实例包装驱动路径,再传递给webdriver.Chrome()

2. 修复无法点击搜索结果的问题

原代码的核心问题包括:

  • 依赖time.sleep硬等待,页面加载速度波动时容易出现元素定位失败
  • 直接用tag name="h3"定位可能匹配到非搜索结果的元素(比如页面顶部的导航类h3)
  • 部分场景下h3元素本身不可点击,真正可触发跳转的是其包裹的<a>标签

完整修复后的代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

kaupunki = "Helsinki"

# 路径前加r避免转义字符解析错误
PATH = r"C:\Program Files (x86)\selenium\chromedriver.exe"
service = Service(PATH)
driver = webdriver.Chrome(service=service)

try:
    driver.get("https://www.google.com")
    
    # 显式等待同意按钮加载完成并点击
    accept_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//*[@id="L2AGLb"]/div'))
    )
    accept_btn.click()
    
    # 等待搜索框出现并输入内容
    search_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, 'q'))
    )
    search_box.send_keys("airbnb ", kaupunki)
    search_box.send_keys(Keys.ENTER)
    
    # 等待第一个搜索结果的可点击链接并触发点击
    first_result = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "div.g a h3"))
    )
    first_result.click()
    
finally:
    # 可根据需求选择是否自动关闭浏览器
    # driver.quit()
    pass

关键改进说明

  • 用WebDriverWait显式等待替代time.sleep,确保元素就绪后再操作,大幅提升稳定性
  • 通过CSS_SELECTOR精准定位搜索结果区域内的h3标签,避免误触非目标元素
  • 路径字符串前加r,防止反斜杠被解析为转义字符导致路径错误
  • 用try-finally块保证浏览器资源能正确释放

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:10:40