如何使用动态生成的ids Selenium test Python选择列表项

2024-04-28 17:15:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我无法找到列表项。在

<ul id="select2-id_faculty_advisor-results" class="select2-results__options" role="tree" aria-multiselectable="true" aria-expanded="true" aria-hidden="false">
    <li id="select2-id_faculty_advisor-result-0pu4-1" class="select2-results__option select2-results__option--highlighted" role="treeitem" aria-selected="true">Alice</li>
    <li id="select2-id_faculty_advisor-result-cayw-2" class="select2-results__option" role="treeitem" aria-selected="false">Bob</li>
    <li id="select2-id_faculty_advisor-result-4h8e-3" class="select2-results__option" role="treeitem" aria-selected="false">Candy</li>
    <li id="select2-id_faculty_advisor-result-el4l-4" class="select2-results__option" role="treeitem" aria-selected="false">Dark</li>
</ul>

如上所述,我无法通过id找到元素,因为它们之间的字符是动态生成的。你知道如何定位一个特定的元素吗??在


Tags: idfalsetrueliresultresultsclassrole
2条回答

最好的方法是通过xpath来收集列表“//ul[@id='select2-id_faculty_advisor-results']/li”

之后,您可以从集合中按索引选择它们。在

在css选择器中使用id中不变的部分,例如:
li[id*='faculty_advisor-result']

如果需要,还可以添加额外的属性,例如aria selected,例如:
li[id*='faculty_advisor-result'][aria-selected='false']或任何其他属性。在

如果没有特定选项的任何特定属性,则可以使用xpath选择具有该选项的元素,例如:
^{cd3} 同样,您可以添加额外的过滤器来缩小结果,例如[@role='tree']

相关问题 更多 >