我在这里遇到问题,我无法找到列表项。
<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找到元素,因为其间的字符是动态生成的。有关如何定位特定元素的任何想法吗?
答案 0 :(得分:0)
使用在css选择器中没有改变的id部分,如:
li[id*='faculty_advisor-result']
如果需要,您还可以添加额外的属性,例如aria-selected,如:
li[id*='faculty_advisor-result'][aria-selected='false']
或任何其他属性。
如果您没有特定选项的任何特定属性,则可以使用xpath选择具有该选项的元素,如:
//li[contains(@id, 'faculty_advisor-result')][text()='Alice']
与添加额外过滤器以缩小[@role='tree']
答案 1 :(得分:0)
最好的方法是通过xpath收集列表“// ul [@ id ='select2-id_faculty_advisor-results'] / li”
之后,您可以从集合中按索引选择它们。