如何通过Selenium获取class为gsc-cursor-page的元素数量
正确获取嵌套元素数量的方法
你的代码存在几个问题:
find_element_by_css_selector只会返回匹配到的第一个元素,要获取多个元素需要用复数形式find_elements_by_css_selector- 遍历单个元素会触发类型错误,因为
pages_nav是单个元素而非可迭代的列表 - 打印
len(pages)的写法错误,直接计算元素列表的长度即可
下面是两种正确的实现方式:
方式一:直接定位所有目标元素
直接通过CSS选择器定位所有.gsc-cursor-page元素,然后获取其长度:
# 获取所有class为gsc-cursor-page的元素 pages = driver.find_elements_by_css_selector('.gsc-cursor-page') # 打印元素数量 print(len(pages))
方式二:通过父元素定位子元素
先找到父容器.gsc-cursor,再在这个容器内部查找子元素,定位更精准:
# 先获取父容器元素 pages_nav = driver.find_element_by_css_selector('.gsc-cursor') # 在父容器内查找所有子元素 pages = pages_nav.find_elements_by_css_selector('.gsc-cursor-page') # 打印元素数量 print(len(pages))
如果页面是动态加载的,建议先等待元素加载完成,避免返回空列表:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待父容器出现 pages_nav = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.gsc-cursor')) ) # 在父容器内等待所有子元素加载完成 pages = WebDriverWait(pages_nav, 10).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.gsc-cursor-page')) ) print(len(pages))
内容的提问来源于stack exchange,提问作者AnxiousDino
相关产品推荐
相关产品推荐

