Selenium获取嵌套Span中URL文本#2011失败,求修正代码
修正Selenium代码获取GitHub Issue的Fixed by关联PR编号
原代码的核心错误
- XPATH定位逻辑错误:你将
data-issue-and-pr-hovercards-enabled误认为是class属性,但它是span标签的自定义data属性,原XPATH无法匹配到目标元素。 - 内容提取方式错误:你试图从span元素获取
a属性,但span本身没有该属性,#2011是子元素<a>的文本内容,需要定位到这个a标签再提取文本。
修正后的代码方案
提供两种可靠的实现方式:
方案1:通过父span的data属性定位子a标签
# 定位到目标a标签并获取文本 pr_link_text = driver.find_element(By.XPATH, '//span[@data-issue-and-pr-hovercards-enabled]//a[contains(@href, "/pull/")]').text print(pr_link_text) # 输出结果:#2011
方案2:结合"Fixed by"文本精准定位
# 基于"Fixed by"文本定位相邻的a标签 pr_link_text = driver.find_element(By.XPATH, '//span[contains(text(), "Fixed by")]/following-sibling::a').text print(pr_link_text)
新手额外建议
- 定位元素前,可先用浏览器开发者工具(F12)的控制台测试XPATH:输入
$x('你的XPATH表达式'),检查是否能匹配到目标元素。 - 若页面加载较慢,建议添加显式等待,避免因元素未加载完成导致定位失败:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最多等待10秒,直到元素加载完成 pr_link = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//span[@data-issue-and-pr-hovercards-enabled]//a[contains(@href, "/pull/")]')) ) pr_link_text = pr_link.text
内容的提问来源于stack exchange,提问作者Mano Haran
相关产品推荐
相关产品推荐

