如何使用Selenium Python通过strong文本获取元素ID
如何用Selenium Python通过
<strong>文本内容获取对应元素ID并打印? 目标HTML代码
<div id="testModal" class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-shadow ui-hidden-container ui-dialog-exam ui-draggable" role="dialog" aria-labelledby="testModal_title" aria-hidden="false" aria-live="polite" style="width: auto; height: auto; left: 495px; top: 362px; z-index: 1002; display: block;"> <div class="ui-dialog-titlebar ui-widget-header ui-helper-clearfix ui-corner-top ui-draggable-handle"> <span id="testModal_title" class="ui-dialog-title"></span> </div> <div class="ui-dialog-content ui-widget-content" style="height: auto;"> <form id="testForm" name="testForm" method="post" action="/pages/juht/test/test.jsf" enctype="application/x-www-form-urlencoded"> <input type="hidden" name="testForm" value="testForm"> <ul> <li> <a id="testForm:j_idt607:8:j_idt609" href="#" class="ui-commandlink ui-widget" onclick="PrimeFaces.addSubmitParam('testForm',{'testForm:j_idt607:8:j_idt609':'testForm:j_idt607:8:j_idt609'}).submit('testForm');return false;PrimeFaces.onPost();"> <strong>10.10.2022</strong> 19:00 <strong>Place »</strong> </a> </li> <li> <a id="testtestForm:j_idt607:10:j_idt609" href="#" class="ui-commandlink ui-widget" onclick="PrimeFaces.addSubmitParam('testForm',{'testForm:j_idt607:10:j_idt609':'testForm:j_idt607:10:j_idt609'}).submit('testForm');return false;PrimeFaces.onPost();"> <strong>11.10.2022</strong> 11:00 <strong>Place2 »</strong> </a> </li> </ul> <input type="hidden" name="javax.faces.ViewState" value="-4629203658604947866:263715935893442864" autocomplete="off"> </form> </div> </div>
解决方案
核心逻辑:先通过<strong>的文本内容定位到该元素,再找到它的直接父级<a>标签,最后提取<a>标签的id属性。
代码示例
from selenium import webdriver from selenium.webdriver.common.by import By # 初始化Chrome驱动(根据实际浏览器替换) driver = webdriver.Chrome() driver.get("目标页面的URL") # 示例1:通过日期文本"10.10.2022"获取对应<a>的ID target_text = "10.10.2022" a_element = driver.find_element(By.XPATH, f"//strong[text()='{target_text}']/parent::a") print(f"对应元素ID:{a_element.get_attribute('id')}") # 示例2:通过地点文本"Place2 »"获取对应<a>的ID target_text = "Place2 »" a_element = driver.find_element(By.XPATH, f"//strong[text()='{target_text}']/parent::a") print(f"对应元素ID:{a_element.get_attribute('id')}") # 示例3:处理多个匹配元素(若存在相同文本的strong) target_text = "11.10.2022" elements = driver.find_elements(By.XPATH, f"//strong[text()='{target_text}']/parent::a") for elem in elements: print(f"匹配元素ID:{elem.get_attribute('id')}") # 关闭驱动 driver.quit()
注意事项
如果<strong>文本前后有多余空格导致匹配失败,可使用normalize-space()处理文本,自动去除首尾空格并合并中间连续空格:
a_element = driver.find_element(By.XPATH, f"//strong[normalize-space(text())='{target_text}']/parent::a")
内容的提问来源于stack exchange,提问作者Mrwolf
相关产品推荐
相关产品推荐

