使用Selenium自动化时无法在多版本列表中检索指定版本的问题
Selenium遍历PyPI版本列表匹配指定版本实现方案
- 首先添加显式等待,确保存储版本列表的id为
history的根节点加载完成,避免元素未渲染导致的定位失败 - 定位到
history节点后,提取其下属所有包含版本号的子元素,PyPI历史页的版本号默认存储在class为release__version的标签内 - 遍历所有提取到的版本号文本,与目标版本
1.7.0做精确匹配即可,匹配成功可按需执行后续自定义操作
注意:如果项目历史版本数量较多,页面会做懒加载截断,需要先模拟滚动到页面底部触发所有版本加载完成后再执行遍历操作,避免遗漏未加载的版本节点。
参考实现代码:
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 # 初始化浏览器驱动 driver = webdriver.Chrome() # 访问seldon-core发布历史页面 driver.get("https://pypi.org/project/seldon-core/#history") # 等待history节点加载完成,超时时间设置为10秒 wait = WebDriverWait(driver, 10) history_section = wait.until(EC.presence_of_element_located((By.ID, "history"))) # 提取该节点下所有版本号元素 version_elements = history_section.find_elements(By.CLASS_NAME, "release__version") target_version = "1.7.0" is_found = False for elem in version_elements: # 去除版本号前后的空白字符再做匹配 current_version = elem.text.strip() if current_version == target_version: is_found = True # 匹配到目标版本后的自定义逻辑可写在此处 print(f"已找到目标版本:{target_version}") break if not is_found: print(f"未检索到目标版本:{target_version}") # 关闭浏览器驱动 driver.quit()
内容的提问来源于stack exchange,提问作者vajr1
相关产品推荐
相关产品推荐

