Python Selenium无法点击Expedia网站Flights按钮该如何解决
Expedia网站Flights按钮Selenium点击解决方案
原代码失败原因
- 你使用的
find_element_by_class_name属于Selenium旧版语法,4.0及以上版本已经废弃该系列API,现在统一使用find_element(By.定位类型, 定位值)的写法 - Expedia的Flights按钮没有值为
Flights的class属性,使用类名定位本身就无法匹配到目标元素 - 未添加等待逻辑,页面元素还没加载完成就执行查找操作,会直接报元素不存在错误
可直接运行的正确代码
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 # Selenium4会自动适配对应Chrome版本的驱动,无需手动指定路径;低版本Selenium可保留原executable_path参数 driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.expedia.com/") # 显式等待最多10秒,直到Flights按钮可点击后再执行操作 flights_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, '//span[text()="Flights"]')) ) flights_button.click()
其他可选定位方式
你也可以通过按钮的aria-label属性用CSS选择器定位,稳定性和XPath一致:
flights_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, 'a[aria-label="Flights"]')) )
内容的提问来源于stack exchange,提问作者NikaTheKilla
相关产品推荐
相关产品推荐

