簡體   English   中英

如何選擇具有動態生成ID的列表項-Selenium Test Python

[英]How to select list item with dynamically generated ids - Selenium test 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查找元素。 關於如何定位特定元素的任何想法嗎?

在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']

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

之后,您可以從集合中按索引選擇它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM