首页 > 解决方案 > 使用 Selenium 单击动态更改的 ID 元素

问题描述

我有这段 HTML 代码:

<li class="ui-menu-item" id="ui-id-12" tabindex="-1"><a>2</a></li>
<a>2</a>
</li>

id“ui-id-12”随着数字是变化的部分而动态变化,所以我想知道如何使用 Selenium 和 XPaths 找到这个元素。我正在考虑使用锚元素标签中的内容来查找元素,但不确定这是否聪明,所以我来到这里询问什么是最佳选择。

标签: pythonseleniumselenium-webdriverxpathcss-selectors

解决方案


元素的id属性值,即ui-id-12是动态的。因此,要查找元素,您可以使用以下任一Locator Strategies<li>

  • 使用css_selector

    element = driver.find_element_by_css_selector("li.ui-menu-item[id^='ui-id-']")
    
  • 使用xpath

    element = driver.find_element_by_xpath("//li[starts-with(@id, 'ui-id-') and @class='ui-menu-item']")
    

推荐阅读