无法从'list-item-value ng-binding'类获取文本 - Selenium WebDriver求助
定位“Last Manual Run”对应值的解决方案
针对你遇到的Angular页面元素定位问题,这里提供几种直接有效的解决方法:
方法1:通过XPath精准定位目标元素
利用<b>标签的文本内容关联到对应的<div>值元素,XPath可以直接锁定目标:
from selenium.webdriver.common.by import By # 构造精准定位的XPath表达式 target_xpath = "//b[text()='Last Manual Run']/following-sibling::div[@class='list-item-value ng-binding']" # 获取目标元素的文本内容 last_manual_run_text = driver.find_element(By.XPATH, target_xpath).text print(last_manual_run_text)
这个XPath的逻辑是:先找到文本为“Last Manual Run”的<b>标签,再选取它的下一个同级<div>元素(即对应的值容器)。
方法2:先定位父级<li>再找子元素
如果担心文本匹配的精度问题,可以先定位包含目标标签的<li>元素,再在其中查找值元素:
from selenium.webdriver.common.by import By # 先找到包含"Last Manual Run"的li元素 parent_li = driver.find_element(By.XPATH, "//li[contains(b/text(), 'Last Manual Run')]") # 在li元素内部定位值元素 last_manual_run_text = parent_li.find_element(By.CLASS_NAME, "list-item-value").text print(last_manual_run_text)
关键注意事项
- 处理动态加载:由于是Angular渲染的页面,元素可能不会立即加载完成,建议使用显式等待避免“元素未找到”的错误:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) target_element = wait.until(EC.visibility_of_element_located((By.XPATH, target_xpath))) last_manual_run_text = target_element.text
- 避免模糊定位:直接通过
list-item-value ng-binding类名定位会返回多个元素,必须关联对应的标签文本才能精准拿到目标值,这也是你之前遍历失败的核心原因。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

