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

Selenium+Python定位Booking.com货币选项报错问题求助

问题解决:Booking.com货币选择元素定位报错

核心错误原因

你触发InvalidSelectorException的根本问题是定位策略和语法不匹配:指定了By.CSS_SELECTOR,但写的是XPath表达式,Selenium无法识别这种混合写法。

无需遍历列表,直接修正定位方式即可

给你两种可行的正确定位方案:

方案1:用XPath定位(修正语法+匹配策略)

XPath的文本匹配需要给目标字符串加引号,同时要指定By.XPATH作为定位策略:

currency = 'USD'
selected_currency_element = self.find_element(By.XPATH, f'//span[text()="{currency}"]')
selected_currency_element.click()

如果目标文本可能带有前后空格,用normalize-space()处理会更稳妥:

selected_currency_element = self.find_element(By.XPATH, f'//span[normalize-space(text())="{currency}"]')

方案2:用CSS选择器定位(更高效稳定)

CSS选择器没有直接匹配文本的原生语法,但可以利用页面元素的属性(Booking的货币选项通常会带data-currency这类专属属性),比如:

selected_currency_element = self.find_element(By.CSS_SELECTOR, f'[data-currency="{currency}"]')
selected_currency_element.click()

如果必须基于文本匹配,部分现代浏览器支持:contains()伪类(注意兼容性):

selected_currency_element = self.find_element(By.CSS_SELECTOR, f'span:contains("{currency}")')

额外提示

优先选择属性定位(比如data-currency),比文本定位更稳定——网站文本可能因翻译、格式调整变化,但属性值一般不会轻易改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07