Selenium用XPath提取指定class的td标签文本失败,如何获取目标数值?
解决方法
问题原因
- 原XPath的class匹配逻辑错误:
contains(@class, 'day disabled fullcap alertClasstext')是判断class属性值里是否包含连续的整串字符,如果HTML中td的类名顺序和你写的不一致,就会匹配失败。 - 可能存在元素未加载完成就执行查找的情况,导致找到的元素列表为空。
- 部分场景下元素文本未直接暴露在渲染层,用
.text无法获取到内容。
修复后的代码
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 加显式等待,确保目标元素已加载完成 wait = WebDriverWait(driver, 10) # 每个类名单独匹配,不受类顺序影响 elems = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//td[contains(@class, 'day') and contains(@class, 'disabled') and contains(@class, 'fullcap') and contains(@class, 'alertClasstext') and contains(@title, 'Slots Full')]"))) for elm in elems: # textContent可以拿到隐藏状态下的文本内容 print(elm.get_attribute('textContent').strip())
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

