Python Selenium点击含指定文本的div元素报错求助
Selenium定位元素报错InvalidSelectorException的解决办法
错误根源:你写的XPath语法不对,
contains()函数的正确格式是contains(@属性名, '属性值'),你写成了contains(@class='activity-start-time ng-star-inserted'),这种写法不符合XPath规则,直接导致解析失败抛出异常。修正后的代码:
# 匹配同时包含两个class的div元素 WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'activity-start-time') and contains(@class, 'ng-star-inserted')]//span[contains(text(),'5:00PM')]"))).click()
如果不需要同时匹配两个class,也可以简化成:
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'activity-start-time')]//span[contains(text(),'5:00PM')]"))).click()
- 额外提醒:
- 要是
5:00PM是精确显示的文本,用text()='5:00PM'比contains(text(),'5:00PM')更精准,能避免误匹配其他包含该文本的元素 - 检查目标元素是否嵌套在iframe里,要是有这情况,得先切换到对应的iframe才能定位元素
- 要是页面加载慢,可适当延长等待时间(比如把
5改成10),或者先判断页面关键元素加载完成再执行定位操作
- 要是
内容的提问来源于stack exchange,提问作者Amin M
相关产品推荐
相关产品推荐

