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

使用Selenium实现谷歌航班搜索自动化遇搜索点击无效问题

解决谷歌航班爬虫搜索按钮点击无响应问题

问题根源及解决思路

  • 绝对XPATH易失效:你使用的全路径XPATH依赖页面固定结构,谷歌航班页面经常更新,这种定位方式极易失效,改用基于元素属性的相对定位更可靠。
  • 未确认城市选择:输入城市名后,谷歌航班会弹出建议列表,直接点击搜索会因系统未确认城市选择导致无响应,必须选择建议项完成城市确认。
  • 等待方式不合理:全局隐式等待无法精准匹配元素状态,关键操作前用显式等待确保元素可交互,避免过早操作导致失效。
  • 点击目标错误:你点击的是按钮内部的div元素,而非按钮本身,容易触发无效点击,需直接定位可点击的按钮节点。

修改后的代码

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

if __name__ == "__main__":
    driver = webdriver.Chrome()
    driver.get('https://www.google.com/travel/flights')
    driver.maximize_window()
    wait = WebDriverWait(driver, 20)

    # 定位出发地输入框并输入,选择建议项
    where_from = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@aria-label='出发地']")))
    where_from.clear()
    where_from.send_keys('Sydney')
    wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@role='option']//span[text()='Sydney, New South Wales, Australia']"))).click()

    # 定位目的地输入框并输入,选择建议项
    where_to = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@aria-label='目的地']")))
    where_to.clear()
    where_to.send_keys('Auckland')
    wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@role='option']//span[text()='Auckland, New Zealand']"))).click()

    # 点击搜索按钮
    search_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='搜索航班']")))
    search_btn.click()

代码说明

  1. 用WebDriverWait显式等待替代全局隐式等待,精准控制元素交互时机;
  2. 通过aria-label属性定位输入框,避免页面结构变化导致定位失败;
  3. 输入城市后等待并点击建议项,完成系统对城市的确认;
  4. 直接定位搜索按钮节点,确保点击区域有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:07:16