使用Python Selenium爬取时,点击aria-expanded元素遇异常问题
问题解决:Selenium无法定位动态菜单元素的替代方案
问题场景
使用Python Selenium进行网页爬取,登录成功后需点击id为enlace1的Comercios按钮,展开包含id为enlace1_1的Consultar菜单链接,但多次尝试定位元素均失败。
尝试过的代码及错误
1. 显式等待定位元素
代码:
wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='enlace1']"))) driver.find_element(By.ID, "enlace1").click()
错误信息:
TimeoutException: Message: Stacktrace: Backtrace: (No symbol) [0x0090DCE3] (No symbol) [0x008A39D1] (No symbol) [0x007B4DA8] (No symbol) [0x007E019F] (No symbol) [0x007E03AB] (No symbol) [0x0080EE62] ... (No symbol) [0x008BC63B] BaseThreadInitThunk [0x767C00F9+25] RtlGetAppContainerNamedObjectPath [0x77497BBE+286] RtlGetAppContainerNamedObjectPath [0x77497B8E+238]
2. 直接定位元素
代码:
enlace1=driver.find_element(By.ID,"enlace1") enlace1.click()
错误信息:
NoSuchElementException (No symbol) [0x008BC63B] BaseThreadInitThunk [0x767C00F9+25] RtlGetAppContainerNamedObjectPath [0x77497BBE+286] RtlGetAppContainerNamedObjectPath [0x77497B8E+238]
相关页面HTML结构
<li class="nivel1 ui-accordion-li-fix"> <a class="nivel1 ui-accordion-header ui-helper-reset ui-state-active ui-corner-top" id="enlace1" href="" role="tab" aria-expanded="true" tabindex="0"><span class="ui-icon ui-icon-triangle-1-s"></span>Comercios</a> <ul id="menu1" class="nivel2 ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active" role="tabpanel" style="display: block;"> <li class="nivel2"> <a class="nivel2" id="enlace1_1" href="" onclick="cargarJava('/odin-war/odin/comercios/query.html');return false;">Consultar</a> </li>
解决方案及推测
尝试过通过ID、XPATH、CSS选择器、类名定位enlace1元素均无效,最终发现登录后直接跳转至目标页面URL(即Consultar链接对应的/odin-war/odin/comercios/query.html)可完成后续爬取操作。
推测原问题由页面动态属性变化或网站特殊结构设计导致,Selenium无法正常识别或交互目标菜单元素。
内容的提问来源于stack exchange,提问作者user21139164
相关产品推荐
相关产品推荐

